ChainSafe / lodestar

🌟 TypeScript Implementation of Ethereum Consensus
https://lodestar.chainsafe.io
Apache License 2.0
1.15k stars 283 forks source link

chore: metrics for regen getState() #7086

Closed twoeths closed 2 weeks ago

twoeths commented 2 weeks ago

Motivation

Track metrics from #7033

Description

Screenshot 2024-09-16 at 10 44 03
codecov[bot] commented 2 weeks ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 50.90%. Comparing base (295690b) to head (9883ea4). Report is 1 commits behind head on unstable.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## unstable #7086 +/- ## ========================================= Coverage 50.90% 50.90% ========================================= Files 594 594 Lines 39611 39611 Branches 2254 2258 +4 ========================================= + Hits 20164 20165 +1 + Misses 19447 19446 -1 ```
github-actions[bot] commented 2 weeks ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: b02c5b9766050fe73c3406f2dbd6d6b789c3b0bd | Previous: 295690b89611da4e9bdc551afcd47dda49642462 | Ratio | |-|-|-|-| | getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.8131 ms/op | 1.8475 ms/op | 0.98 | | getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 44.512 us/op | 38.026 us/op | 1.17 | | BLS verify - blst | 745.46 us/op | 837.89 us/op | 0.89 | | BLS verifyMultipleSignatures 3 - blst | 1.1453 ms/op | 1.3111 ms/op | 0.87 | | BLS verifyMultipleSignatures 8 - blst | 1.6203 ms/op | 2.0827 ms/op | 0.78 | | BLS verifyMultipleSignatures 32 - blst | 4.7337 ms/op | 4.5416 ms/op | 1.04 | | BLS verifyMultipleSignatures 64 - blst | 8.7382 ms/op | 8.4173 ms/op | 1.04 | | BLS verifyMultipleSignatures 128 - blst | 16.663 ms/op | 15.977 ms/op | 1.04 | | BLS deserializing 10000 signatures | 648.22 ms/op | 600.29 ms/op | 1.08 | | BLS deserializing 100000 signatures | 6.4766 s/op | 6.1818 s/op | 1.05 | | BLS verifyMultipleSignatures - same message - 3 - blst | 867.95 us/op | 974.06 us/op | 0.89 | | BLS verifyMultipleSignatures - same message - 8 - blst | 986.67 us/op | 1.1067 ms/op | 0.89 | | BLS verifyMultipleSignatures - same message - 32 - blst | 1.6200 ms/op | 1.6896 ms/op | 0.96 | | BLS verifyMultipleSignatures - same message - 64 - blst | 2.4766 ms/op | 2.5516 ms/op | 0.97 | | BLS verifyMultipleSignatures - same message - 128 - blst | 4.1509 ms/op | 4.2240 ms/op | 0.98 | | BLS aggregatePubkeys 32 - blst | 18.988 us/op | 18.876 us/op | 1.01 | | BLS aggregatePubkeys 128 - blst | 68.048 us/op | 64.947 us/op | 1.05 | | notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 62.476 ms/op | 52.694 ms/op | 1.19 | | notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 48.610 ms/op | 38.649 ms/op | 1.26 | | notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 30.281 ms/op | 29.247 ms/op | 1.04 | | getSlashingsAndExits - default max | 87.850 us/op | 69.025 us/op | 1.27 | | getSlashingsAndExits - 2k | 303.60 us/op | 320.56 us/op | 0.95 | | proposeBlockBody type=full, size=empty | 5.7066 ms/op | 4.9849 ms/op | 1.14 | | isKnown best case - 1 super set check | 269.00 ns/op | 644.00 ns/op | 0.42 | | isKnown normal case - 2 super set checks | 263.00 ns/op | 535.00 ns/op | 0.49 | | isKnown worse case - 16 super set checks | 263.00 ns/op | 521.00 ns/op | 0.50 | | InMemoryCheckpointStateCache - add get delete | 2.6740 us/op | 3.3830 us/op | 0.79 | | updateUnfinalizedPubkeys - updating 10 pubkeys | 823.02 us/op | 494.44 us/op | 1.66 | | updateUnfinalizedPubkeys - updating 100 pubkeys | 3.2081 ms/op | 2.5990 ms/op | 1.23 | | updateUnfinalizedPubkeys - updating 1000 pubkeys | 46.448 ms/op | 38.415 ms/op | 1.21 | | validate api signedAggregateAndProof - struct | 1.3311 ms/op | 1.5483 ms/op | 0.86 | | validate gossip signedAggregateAndProof - struct | 1.3548 ms/op | 1.4751 ms/op | 0.92 | | validate gossip attestation - vc 640000 | 825.72 us/op | 1.0011 ms/op | 0.82 | | batch validate gossip attestation - vc 640000 - chunk 32 | 119.14 us/op | 134.02 us/op | 0.89 | | batch validate gossip attestation - vc 640000 - chunk 64 | 109.27 us/op | 115.10 us/op | 0.95 | | batch validate gossip attestation - vc 640000 - chunk 128 | 101.49 us/op | 107.30 us/op | 0.95 | | batch validate gossip attestation - vc 640000 - chunk 256 | 98.357 us/op | 105.35 us/op | 0.93 | | pickEth1Vote - no votes | 957.10 us/op | 912.13 us/op | 1.05 | | pickEth1Vote - max votes | 5.7258 ms/op | 5.6267 ms/op | 1.02 | | pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 14.608 ms/op | 17.244 ms/op | 0.85 | | pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 19.608 ms/op | 20.908 ms/op | 0.94 | | pickEth1Vote - Eth1Data fastSerialize value x2048 | 455.34 us/op | 353.72 us/op | 1.29 | | pickEth1Vote - Eth1Data fastSerialize tree x2048 | 3.5050 ms/op | 4.4401 ms/op | 0.79 | | bytes32 toHexString | 425.00 ns/op | 654.00 ns/op | 0.65 | | bytes32 Buffer.toString(hex) | 246.00 ns/op | 489.00 ns/op | 0.50 | | bytes32 Buffer.toString(hex) from Uint8Array | 379.00 ns/op | 654.00 ns/op | 0.58 | | bytes32 Buffer.toString(hex) + 0x | 246.00 ns/op | 467.00 ns/op | 0.53 | | Object access 1 prop | 0.14100 ns/op | 0.35100 ns/op | 0.40 | | Map access 1 prop | 0.12300 ns/op | 0.32400 ns/op | 0.38 | | Object get x1000 | 5.9340 ns/op | 5.2410 ns/op | 1.13 | | Map get x1000 | 6.3600 ns/op | 6.0430 ns/op | 1.05 | | Object set x1000 | 32.074 ns/op | 23.340 ns/op | 1.37 | | Map set x1000 | 22.005 ns/op | 19.633 ns/op | 1.12 | | Return object 10000 times | 0.28880 ns/op | 0.31000 ns/op | 0.93 | | Throw Error 10000 times | 3.3352 us/op | 2.7832 us/op | 1.20 | | toHex | 138.72 ns/op | 114.00 ns/op | 1.22 | | Buffer.from | 124.53 ns/op | 102.76 ns/op | 1.21 | | shared Buffer | 94.642 ns/op | 72.187 ns/op | 1.31 | | fastMsgIdFn sha256 / 200 bytes | 2.2810 us/op | 2.0220 us/op | 1.13 | | fastMsgIdFn h32 xxhash / 200 bytes | 227.00 ns/op | 466.00 ns/op | 0.49 | | fastMsgIdFn h64 xxhash / 200 bytes | 264.00 ns/op | 473.00 ns/op | 0.56 | | fastMsgIdFn sha256 / 1000 bytes | 7.2260 us/op | 6.0460 us/op | 1.20 | | fastMsgIdFn h32 xxhash / 1000 bytes | 355.00 ns/op | 586.00 ns/op | 0.61 | | fastMsgIdFn h64 xxhash / 1000 bytes | 334.00 ns/op | 549.00 ns/op | 0.61 | | fastMsgIdFn sha256 / 10000 bytes | 63.689 us/op | 50.561 us/op | 1.26 | | fastMsgIdFn h32 xxhash / 10000 bytes | 1.7940 us/op | 2.0060 us/op | 0.89 | | fastMsgIdFn h64 xxhash / 10000 bytes | 1.1930 us/op | 1.3750 us/op | 0.87 | | send data - 1000 256B messages | 11.569 ms/op | 10.320 ms/op | 1.12 | | send data - 1000 512B messages | 15.363 ms/op | 15.210 ms/op | 1.01 | | send data - 1000 1024B messages | 25.299 ms/op | 23.367 ms/op | 1.08 | | send data - 1000 1200B messages | 25.243 ms/op | 23.647 ms/op | 1.07 | | send data - 1000 2048B messages | 30.931 ms/op | 30.071 ms/op | 1.03 | | send data - 1000 4096B messages | 29.523 ms/op | 28.252 ms/op | 1.04 | | send data - 1000 16384B messages | 70.521 ms/op | 69.234 ms/op | 1.02 | | send data - 1000 65536B messages | 198.60 ms/op | 256.14 ms/op | 0.78 | | enrSubnets - fastDeserialize 64 bits | 1.0960 us/op | 1.1630 us/op | 0.94 | | enrSubnets - ssz BitVector 64 bits | 346.00 ns/op | 545.00 ns/op | 0.63 | | enrSubnets - fastDeserialize 4 bits | 146.00 ns/op | 380.00 ns/op | 0.38 | | enrSubnets - ssz BitVector 4 bits | 348.00 ns/op | 558.00 ns/op | 0.62 | | prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 142.14 us/op | 125.32 us/op | 1.13 | | prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 167.93 us/op | 149.25 us/op | 1.13 | | prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 249.65 us/op | 302.09 us/op | 0.83 | | prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 390.28 us/op | 408.50 us/op | 0.96 | | prioritizePeers score 0:0 att 64-1 sync 4-1 | 655.78 us/op | 635.30 us/op | 1.03 | | array of 16000 items push then shift | 1.6630 us/op | 1.3072 us/op | 1.27 | | LinkedList of 16000 items push then shift | 7.2470 ns/op | 8.0050 ns/op | 0.91 | | array of 16000 items push then pop | 111.71 ns/op | 119.92 ns/op | 0.93 | | LinkedList of 16000 items push then pop | 7.1130 ns/op | 6.6130 ns/op | 1.08 | | array of 24000 items push then shift | 2.4539 us/op | 1.9216 us/op | 1.28 | | LinkedList of 24000 items push then shift | 7.1840 ns/op | 7.4060 ns/op | 0.97 | | array of 24000 items push then pop | 137.21 ns/op | 161.49 ns/op | 0.85 | | LinkedList of 24000 items push then pop | 7.1730 ns/op | 6.6100 ns/op | 1.09 | | intersect bitArray bitLen 8 | 6.3880 ns/op | 5.7000 ns/op | 1.12 | | intersect array and set length 8 | 46.112 ns/op | 40.158 ns/op | 1.15 | | intersect bitArray bitLen 128 | 29.952 ns/op | 27.443 ns/op | 1.09 | | intersect array and set length 128 | 670.69 ns/op | 596.46 ns/op | 1.12 | | bitArray.getTrueBitIndexes() bitLen 128 | 1.9770 us/op | 2.4170 us/op | 0.82 | | bitArray.getTrueBitIndexes() bitLen 248 | 3.3110 us/op | 4.7490 us/op | 0.70 | | bitArray.getTrueBitIndexes() bitLen 512 | 6.3970 us/op | 6.7380 us/op | 0.95 | | Buffer.concat 32 items | 932.00 ns/op | 1.0460 us/op | 0.89 | | Uint8Array.set 32 items | 1.6390 us/op | 1.3670 us/op | 1.20 | | Buffer.copy | 1.6950 us/op | 1.4800 us/op | 1.15 | | Uint8Array.set - with subarray | 2.3980 us/op | 1.9980 us/op | 1.20 | | Uint8Array.set - without subarray | 1.2420 us/op | 1.3690 us/op | 0.91 | | getUint32 - dataview | 235.00 ns/op | 430.00 ns/op | 0.55 | | getUint32 - manual | 155.00 ns/op | 361.00 ns/op | 0.43 | | Set add up to 64 items then delete first | 2.2188 us/op | 1.8805 us/op | 1.18 | | OrderedSet add up to 64 items then delete first | 3.5534 us/op | 2.9524 us/op | 1.20 | | Set add up to 64 items then delete last | 2.6178 us/op | 2.1724 us/op | 1.21 | | OrderedSet add up to 64 items then delete last | 4.0184 us/op | 3.2520 us/op | 1.24 | | Set add up to 64 items then delete middle | 2.5536 us/op | 2.1403 us/op | 1.19 | | OrderedSet add up to 64 items then delete middle | 5.5117 us/op | 4.8414 us/op | 1.14 | | Set add up to 128 items then delete first | 5.0992 us/op | 4.1909 us/op | 1.22 | | OrderedSet add up to 128 items then delete first | 7.6144 us/op | 6.5846 us/op | 1.16 | | Set add up to 128 items then delete last | 5.1927 us/op | 4.0488 us/op | 1.28 | | OrderedSet add up to 128 items then delete last | 7.8025 us/op | 6.1972 us/op | 1.26 | | Set add up to 128 items then delete middle | 5.0402 us/op | 4.0569 us/op | 1.24 | | OrderedSet add up to 128 items then delete middle | 13.973 us/op | 12.270 us/op | 1.14 | | Set add up to 256 items then delete first | 10.237 us/op | 8.1864 us/op | 1.25 | | OrderedSet add up to 256 items then delete first | 15.330 us/op | 13.073 us/op | 1.17 | | Set add up to 256 items then delete last | 10.107 us/op | 7.9690 us/op | 1.27 | | OrderedSet add up to 256 items then delete last | 16.169 us/op | 12.477 us/op | 1.30 | | Set add up to 256 items then delete middle | 10.010 us/op | 7.9260 us/op | 1.26 | | OrderedSet add up to 256 items then delete middle | 41.042 us/op | 35.775 us/op | 1.15 | | transfer serialized Status (84 B) | 1.3510 us/op | 1.4230 us/op | 0.95 | | copy serialized Status (84 B) | 1.1140 us/op | 1.2260 us/op | 0.91 | | transfer serialized SignedVoluntaryExit (112 B) | 1.4260 us/op | 1.5190 us/op | 0.94 | | copy serialized SignedVoluntaryExit (112 B) | 1.1510 us/op | 1.3120 us/op | 0.88 | | transfer serialized ProposerSlashing (416 B) | 1.5750 us/op | 1.6200 us/op | 0.97 | | copy serialized ProposerSlashing (416 B) | 2.5010 us/op | 1.4870 us/op | 1.68 | | transfer serialized Attestation (485 B) | 2.5640 us/op | 1.6300 us/op | 1.57 | | copy serialized Attestation (485 B) | 2.5460 us/op | 1.4740 us/op | 1.73 | | transfer serialized AttesterSlashing (33232 B) | 1.9630 us/op | 1.8170 us/op | 1.08 | | copy serialized AttesterSlashing (33232 B) | 5.4160 us/op | 3.9240 us/op | 1.38 | | transfer serialized Small SignedBeaconBlock (128000 B) | 2.6880 us/op | 2.1980 us/op | 1.22 | | copy serialized Small SignedBeaconBlock (128000 B) | 16.742 us/op | 39.350 us/op | 0.43 | | transfer serialized Avg SignedBeaconBlock (200000 B) | 3.1410 us/op | 2.3820 us/op | 1.32 | | copy serialized Avg SignedBeaconBlock (200000 B) | 59.816 us/op | 11.937 us/op | 5.01 | | transfer serialized BlobsSidecar (524380 B) | 3.0230 us/op | 2.6890 us/op | 1.12 | | copy serialized BlobsSidecar (524380 B) | 80.556 us/op | 73.437 us/op | 1.10 | | transfer serialized Big SignedBeaconBlock (1000000 B) | 2.8230 us/op | 2.9950 us/op | 0.94 | | copy serialized Big SignedBeaconBlock (1000000 B) | 150.04 us/op | 225.10 us/op | 0.67 | | pass gossip attestations to forkchoice per slot | 2.8597 ms/op | 2.5217 ms/op | 1.13 | | forkChoice updateHead vc 100000 bc 64 eq 0 | 603.64 us/op | 414.61 us/op | 1.46 | | forkChoice updateHead vc 600000 bc 64 eq 0 | 3.2019 ms/op | 2.6361 ms/op | 1.21 | | forkChoice updateHead vc 1000000 bc 64 eq 0 | 5.5023 ms/op | 4.2019 ms/op | 1.31 | | forkChoice updateHead vc 600000 bc 320 eq 0 | 3.0629 ms/op | 2.5151 ms/op | 1.22 | | forkChoice updateHead vc 600000 bc 1200 eq 0 | 3.0773 ms/op | 2.5649 ms/op | 1.20 | | forkChoice updateHead vc 600000 bc 7200 eq 0 | 4.1388 ms/op | 2.8893 ms/op | 1.43 | | forkChoice updateHead vc 600000 bc 64 eq 1000 | 10.710 ms/op | 9.8847 ms/op | 1.08 | | forkChoice updateHead vc 600000 bc 64 eq 10000 | 10.744 ms/op | 9.7294 ms/op | 1.10 | | forkChoice updateHead vc 600000 bc 64 eq 300000 | 14.604 ms/op | 11.966 ms/op | 1.22 | | computeDeltas 500000 validators 300 proto nodes | 3.6525 ms/op | 3.2220 ms/op | 1.13 | | computeDeltas 500000 validators 1200 proto nodes | 3.6815 ms/op | 3.0588 ms/op | 1.20 | | computeDeltas 500000 validators 7200 proto nodes | 3.6610 ms/op | 3.1146 ms/op | 1.18 | | computeDeltas 750000 validators 300 proto nodes | 5.1280 ms/op | 4.6162 ms/op | 1.11 | | computeDeltas 750000 validators 1200 proto nodes | 5.1629 ms/op | 4.4381 ms/op | 1.16 | | computeDeltas 750000 validators 7200 proto nodes | 5.1422 ms/op | 4.5724 ms/op | 1.12 | | computeDeltas 1400000 validators 300 proto nodes | 9.6081 ms/op | 8.4432 ms/op | 1.14 | | computeDeltas 1400000 validators 1200 proto nodes | 9.8182 ms/op | 8.4121 ms/op | 1.17 | | computeDeltas 1400000 validators 7200 proto nodes | 9.5507 ms/op | 8.5575 ms/op | 1.12 | | computeDeltas 2100000 validators 300 proto nodes | 14.325 ms/op | 12.788 ms/op | 1.12 | | computeDeltas 2100000 validators 1200 proto nodes | 14.215 ms/op | 12.446 ms/op | 1.14 | | computeDeltas 2100000 validators 7200 proto nodes | 14.315 ms/op | 12.572 ms/op | 1.14 | | altair processAttestation - 250000 vs - 7PWei normalcase | 1.6936 ms/op | 1.4214 ms/op | 1.19 | | altair processAttestation - 250000 vs - 7PWei worstcase | 2.4376 ms/op | 2.1672 ms/op | 1.12 | | altair processAttestation - setStatus - 1/6 committees join | 86.304 us/op | 62.965 us/op | 1.37 | | altair processAttestation - setStatus - 1/3 committees join | 170.16 us/op | 125.86 us/op | 1.35 | | altair processAttestation - setStatus - 1/2 committees join | 239.93 us/op | 188.80 us/op | 1.27 | | altair processAttestation - setStatus - 2/3 committees join | 315.04 us/op | 275.76 us/op | 1.14 | | altair processAttestation - setStatus - 4/5 committees join | 456.77 us/op | 388.58 us/op | 1.18 | | altair processAttestation - setStatus - 100% committees join | 528.22 us/op | 469.77 us/op | 1.12 | | altair processBlock - 250000 vs - 7PWei normalcase | 3.4211 ms/op | 5.1543 ms/op | 0.66 | | altair processBlock - 250000 vs - 7PWei normalcase hashState | 26.107 ms/op | 30.706 ms/op | 0.85 | | altair processBlock - 250000 vs - 7PWei worstcase | 33.080 ms/op | 36.635 ms/op | 0.90 | | altair processBlock - 250000 vs - 7PWei worstcase hashState | 69.138 ms/op | 82.490 ms/op | 0.84 | | phase0 processBlock - 250000 vs - 7PWei normalcase | 1.6567 ms/op | 1.7618 ms/op | 0.94 | | phase0 processBlock - 250000 vs - 7PWei worstcase | 19.090 ms/op | 22.487 ms/op | 0.85 | | altair processEth1Data - 250000 vs - 7PWei normalcase | 287.59 us/op | 256.67 us/op | 1.12 | | getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 4.8150 us/op | 6.5790 us/op | 0.73 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 26.760 us/op | 32.243 us/op | 0.83 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 7.7570 us/op | 8.4760 us/op | 0.92 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 4.9840 us/op | 6.5630 us/op | 0.76 | | getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 109.50 us/op | 125.92 us/op | 0.87 | | getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.1265 ms/op | 832.36 us/op | 1.35 | | getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.4763 ms/op | 1.2014 ms/op | 1.23 | | getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.4822 ms/op | 1.1274 ms/op | 1.31 | | getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.8154 ms/op | 2.8592 ms/op | 1.33 | | getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.5751 ms/op | 1.2230 ms/op | 1.29 | | getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 3.6747 ms/op | 2.8056 ms/op | 1.31 | | Tree 40 250000 create | 217.15 ms/op | 193.59 ms/op | 1.12 | | Tree 40 250000 get(125000) | 141.41 ns/op | 103.19 ns/op | 1.37 | | Tree 40 250000 set(125000) | 642.90 ns/op | 517.07 ns/op | 1.24 | | Tree 40 250000 toArray() | 15.209 ms/op | 12.577 ms/op | 1.21 | | Tree 40 250000 iterate all - toArray() + loop | 15.400 ms/op | 12.568 ms/op | 1.23 | | Tree 40 250000 iterate all - get(i) | 51.246 ms/op | 41.202 ms/op | 1.24 | | Array 250000 create | 2.9469 ms/op | 2.3799 ms/op | 1.24 | | Array 250000 clone - spread | 1.4870 ms/op | 1.1727 ms/op | 1.27 | | Array 250000 get(125000) | 0.40800 ns/op | 0.58200 ns/op | 0.70 | | Array 250000 set(125000) | 0.42100 ns/op | 0.58300 ns/op | 0.72 | | Array 250000 iterate all - loop | 97.415 us/op | 74.083 us/op | 1.31 | | phase0 afterProcessEpoch - 250000 vs - 7PWei | 86.936 ms/op | 71.594 ms/op | 1.21 | | Array.fill - length 1000000 | 3.6410 ms/op | 2.4304 ms/op | 1.50 | | Array push - length 1000000 | 16.315 ms/op | 15.029 ms/op | 1.09 | | Array.get | 0.26768 ns/op | 0.25572 ns/op | 1.05 | | Uint8Array.get | 0.43058 ns/op | 0.33030 ns/op | 1.30 | | phase0 beforeProcessEpoch - 250000 vs - 7PWei | 14.945 ms/op | 15.621 ms/op | 0.96 | | altair processEpoch - mainnet_e81889 | 315.26 ms/op | 316.12 ms/op | 1.00 | | mainnet_e81889 - altair beforeProcessEpoch | 17.406 ms/op | 18.358 ms/op | 0.95 | | mainnet_e81889 - altair processJustificationAndFinalization | 12.511 us/op | 6.5770 us/op | 1.90 | | mainnet_e81889 - altair processInactivityUpdates | 5.0629 ms/op | 4.2785 ms/op | 1.18 | | mainnet_e81889 - altair processRewardsAndPenalties | 46.777 ms/op | 51.679 ms/op | 0.91 | | mainnet_e81889 - altair processRegistryUpdates | 1.8290 us/op | 1.0450 us/op | 1.75 | | mainnet_e81889 - altair processSlashings | 410.00 ns/op | 741.00 ns/op | 0.55 | | mainnet_e81889 - altair processEth1DataReset | 318.00 ns/op | 733.00 ns/op | 0.43 | | mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.9420 ms/op | 1.4010 ms/op | 1.39 | | mainnet_e81889 - altair processSlashingsReset | 2.8230 us/op | 1.3440 us/op | 2.10 | | mainnet_e81889 - altair processRandaoMixesReset | 4.2540 us/op | 1.5560 us/op | 2.73 | | mainnet_e81889 - altair processHistoricalRootsUpdate | 576.00 ns/op | 396.00 ns/op | 1.45 | | mainnet_e81889 - altair processParticipationFlagUpdates | 1.8590 us/op | 1.3860 us/op | 1.34 | | mainnet_e81889 - altair processSyncCommitteeUpdates | 447.00 ns/op | 608.00 ns/op | 0.74 | | mainnet_e81889 - altair afterProcessEpoch | 88.736 ms/op | 75.189 ms/op | 1.18 | | capella processEpoch - mainnet_e217614 | 1.2928 s/op | 873.75 ms/op | 1.48 | | mainnet_e217614 - capella beforeProcessEpoch | 72.275 ms/op | 59.539 ms/op | 1.21 | | mainnet_e217614 - capella processJustificationAndFinalization | 16.972 us/op | 9.5980 us/op | 1.77 | | mainnet_e217614 - capella processInactivityUpdates | 19.788 ms/op | 13.083 ms/op | 1.51 | | mainnet_e217614 - capella processRewardsAndPenalties | 251.51 ms/op | 222.41 ms/op | 1.13 | | mainnet_e217614 - capella processRegistryUpdates | 19.565 us/op | 11.016 us/op | 1.78 | | mainnet_e217614 - capella processSlashings | 607.00 ns/op | 759.00 ns/op | 0.80 | | mainnet_e217614 - capella processEth1DataReset | 403.00 ns/op | 745.00 ns/op | 0.54 | | mainnet_e217614 - capella processEffectiveBalanceUpdates | 17.429 ms/op | 11.089 ms/op | 1.57 | | mainnet_e217614 - capella processSlashingsReset | 4.3080 us/op | 2.4430 us/op | 1.76 | | mainnet_e217614 - capella processRandaoMixesReset | 4.5630 us/op | 3.2440 us/op | 1.41 | | mainnet_e217614 - capella processHistoricalRootsUpdate | 544.00 ns/op | 746.00 ns/op | 0.73 | | mainnet_e217614 - capella processParticipationFlagUpdates | 1.9270 us/op | 1.6360 us/op | 1.18 | | mainnet_e217614 - capella afterProcessEpoch | 230.90 ms/op | 200.19 ms/op | 1.15 | | phase0 processEpoch - mainnet_e58758 | 316.14 ms/op | 357.74 ms/op | 0.88 | | mainnet_e58758 - phase0 beforeProcessEpoch | 60.769 ms/op | 68.091 ms/op | 0.89 | | mainnet_e58758 - phase0 processJustificationAndFinalization | 14.733 us/op | 7.3200 us/op | 2.01 | | mainnet_e58758 - phase0 processRewardsAndPenalties | 33.572 ms/op | 23.262 ms/op | 1.44 | | mainnet_e58758 - phase0 processRegistryUpdates | 8.1900 us/op | 4.0420 us/op | 2.03 | | mainnet_e58758 - phase0 processSlashings | 374.00 ns/op | 665.00 ns/op | 0.56 | | mainnet_e58758 - phase0 processEth1DataReset | 315.00 ns/op | 709.00 ns/op | 0.44 | | mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.2321 ms/op | 1.3934 ms/op | 0.88 | | mainnet_e58758 - phase0 processSlashingsReset | 2.2820 us/op | 2.3230 us/op | 0.98 | | mainnet_e58758 - phase0 processRandaoMixesReset | 3.9010 us/op | 2.9870 us/op | 1.31 | | mainnet_e58758 - phase0 processHistoricalRootsUpdate | 417.00 ns/op | 734.00 ns/op | 0.57 | | mainnet_e58758 - phase0 processParticipationRecordUpdates | 3.0370 us/op | 2.6520 us/op | 1.15 | | mainnet_e58758 - phase0 afterProcessEpoch | 76.228 ms/op | 65.300 ms/op | 1.17 | | phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.4937 ms/op | 1.0495 ms/op | 1.42 | | phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 2.3844 ms/op | 1.7971 ms/op | 1.33 | | altair processInactivityUpdates - 250000 normalcase | 15.455 ms/op | 16.599 ms/op | 0.93 | | altair processInactivityUpdates - 250000 worstcase | 16.063 ms/op | 15.370 ms/op | 1.05 | | phase0 processRegistryUpdates - 250000 normalcase | 8.4010 us/op | 3.3140 us/op | 2.54 | | phase0 processRegistryUpdates - 250000 badcase_full_deposits | 279.48 us/op | 326.70 us/op | 0.86 | | phase0 processRegistryUpdates - 250000 worstcase 0.5 | 120.88 ms/op | 96.899 ms/op | 1.25 | | altair processRewardsAndPenalties - 250000 normalcase | 42.333 ms/op | 31.095 ms/op | 1.36 | | altair processRewardsAndPenalties - 250000 worstcase | 40.567 ms/op | 36.858 ms/op | 1.10 | | phase0 getAttestationDeltas - 250000 normalcase | 8.1598 ms/op | 5.7149 ms/op | 1.43 | | phase0 getAttestationDeltas - 250000 worstcase | 9.1911 ms/op | 6.5618 ms/op | 1.40 | | phase0 processSlashings - 250000 worstcase | 104.39 us/op | 83.792 us/op | 1.25 | | altair processSyncCommitteeUpdates - 250000 | 126.65 ms/op | 93.237 ms/op | 1.36 | | BeaconState.hashTreeRoot - No change | 319.00 ns/op | 465.00 ns/op | 0.69 | | BeaconState.hashTreeRoot - 1 full validator | 104.36 us/op | 82.362 us/op | 1.27 | | BeaconState.hashTreeRoot - 32 full validator | 922.73 us/op | 1.0231 ms/op | 0.90 | | BeaconState.hashTreeRoot - 512 full validator | 11.662 ms/op | 11.339 ms/op | 1.03 | | BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 132.23 us/op | 139.02 us/op | 0.95 | | BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.8622 ms/op | 1.8393 ms/op | 1.01 | | BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 29.326 ms/op | 23.651 ms/op | 1.24 | | BeaconState.hashTreeRoot - 1 balances | 114.89 us/op | 98.314 us/op | 1.17 | | BeaconState.hashTreeRoot - 32 balances | 1.1661 ms/op | 1.0693 ms/op | 1.09 | | BeaconState.hashTreeRoot - 512 balances | 8.7866 ms/op | 9.6299 ms/op | 0.91 | | BeaconState.hashTreeRoot - 250000 balances | 160.03 ms/op | 171.27 ms/op | 0.93 | | aggregationBits - 2048 els - zipIndexesInBitList | 23.617 us/op | 21.291 us/op | 1.11 | | byteArrayEquals 32 | 53.834 ns/op | 46.480 ns/op | 1.16 | | Buffer.compare 32 | 17.496 ns/op | 14.739 ns/op | 1.19 | | byteArrayEquals 1024 | 1.5918 us/op | 1.2195 us/op | 1.31 | | Buffer.compare 1024 | 26.001 ns/op | 21.733 ns/op | 1.20 | | byteArrayEquals 16384 | 25.321 us/op | 19.352 us/op | 1.31 | | Buffer.compare 16384 | 203.91 ns/op | 165.31 ns/op | 1.23 | | byteArrayEquals 123687377 | 193.02 ms/op | 146.87 ms/op | 1.31 | | Buffer.compare 123687377 | 9.9717 ms/op | 5.4200 ms/op | 1.84 | | byteArrayEquals 32 - diff last byte | 54.275 ns/op | 48.196 ns/op | 1.13 | | Buffer.compare 32 - diff last byte | 18.019 ns/op | 16.051 ns/op | 1.12 | | byteArrayEquals 1024 - diff last byte | 1.6488 us/op | 1.2870 us/op | 1.28 | | Buffer.compare 1024 - diff last byte | 27.168 ns/op | 24.536 ns/op | 1.11 | | byteArrayEquals 16384 - diff last byte | 26.242 us/op | 20.421 us/op | 1.29 | | Buffer.compare 16384 - diff last byte | 206.16 ns/op | 206.89 ns/op | 1.00 | | byteArrayEquals 123687377 - diff last byte | 196.71 ms/op | 153.72 ms/op | 1.28 | | Buffer.compare 123687377 - diff last byte | 8.6366 ms/op | 3.8667 ms/op | 2.23 | | byteArrayEquals 32 - random bytes | 5.3520 ns/op | 4.9720 ns/op | 1.08 | | Buffer.compare 32 - random bytes | 18.097 ns/op | 16.109 ns/op | 1.12 | | byteArrayEquals 1024 - random bytes | 5.3060 ns/op | 4.9660 ns/op | 1.07 | | Buffer.compare 1024 - random bytes | 17.967 ns/op | 15.922 ns/op | 1.13 | | byteArrayEquals 16384 - random bytes | 5.3220 ns/op | 4.9720 ns/op | 1.07 | | Buffer.compare 16384 - random bytes | 18.255 ns/op | 15.997 ns/op | 1.14 | | byteArrayEquals 123687377 - random bytes | 6.6800 ns/op | 7.9000 ns/op | 0.85 | | Buffer.compare 123687377 - random bytes | 19.360 ns/op | 18.920 ns/op | 1.02 | | regular array get 100000 times | 35.386 us/op | 31.278 us/op | 1.13 | | wrappedArray get 100000 times | 33.623 us/op | 31.235 us/op | 1.08 | | arrayWithProxy get 100000 times | 13.291 ms/op | 10.928 ms/op | 1.22 | | ssz.Root.equals | 46.304 ns/op | 44.841 ns/op | 1.03 | | byteArrayEquals | 45.651 ns/op | 43.825 ns/op | 1.04 | | Buffer.compare | 10.822 ns/op | 9.3410 ns/op | 1.16 | | shuffle list - 16384 els | 6.3636 ms/op | 5.5048 ms/op | 1.16 | | shuffle list - 250000 els | 92.034 ms/op | 80.753 ms/op | 1.14 | | processSlot - 1 slots | 12.699 us/op | 12.318 us/op | 1.03 | | processSlot - 32 slots | 2.8627 ms/op | 2.9811 ms/op | 0.96 | | getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 37.681 ms/op | 42.857 ms/op | 0.88 | | getCommitteeAssignments - req 1 vs - 250000 vc | 2.0891 ms/op | 1.7317 ms/op | 1.21 | | getCommitteeAssignments - req 100 vs - 250000 vc | 4.0442 ms/op | 3.4003 ms/op | 1.19 | | getCommitteeAssignments - req 1000 vs - 250000 vc | 4.3074 ms/op | 3.6711 ms/op | 1.17 | | findModifiedValidators - 10000 modified validators | 236.56 ms/op | 245.97 ms/op | 0.96 | | findModifiedValidators - 1000 modified validators | 160.04 ms/op | 169.37 ms/op | 0.94 | | findModifiedValidators - 100 modified validators | 165.59 ms/op | 147.37 ms/op | 1.12 | | findModifiedValidators - 10 modified validators | 158.31 ms/op | 134.93 ms/op | 1.17 | | findModifiedValidators - 1 modified validators | 158.95 ms/op | 137.74 ms/op | 1.15 | | findModifiedValidators - no difference | 179.06 ms/op | 158.45 ms/op | 1.13 | | compare ViewDUs | 3.0925 s/op | 3.0278 s/op | 1.02 | | compare each validator Uint8Array | 1.3902 s/op | 1.1990 s/op | 1.16 | | compare ViewDU to Uint8Array | 1.0812 s/op | 780.40 ms/op | 1.39 | | migrate state 1000000 validators, 24 modified, 0 new | 624.81 ms/op | 574.11 ms/op | 1.09 | | migrate state 1000000 validators, 1700 modified, 1000 new | 784.17 ms/op | 794.74 ms/op | 0.99 | | migrate state 1000000 validators, 3400 modified, 2000 new | 967.15 ms/op | 966.16 ms/op | 1.00 | | migrate state 1500000 validators, 24 modified, 0 new | 616.51 ms/op | 476.08 ms/op | 1.29 | | migrate state 1500000 validators, 1700 modified, 1000 new | 817.09 ms/op | 799.30 ms/op | 1.02 | | migrate state 1500000 validators, 3400 modified, 2000 new | 1.0216 s/op | 1.0428 s/op | 0.98 | | RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.2800 ns/op | 6.0600 ns/op | 0.71 | | state getBlockRootAtSlot - 250000 vs - 7PWei | 637.95 ns/op | 684.57 ns/op | 0.93 | | computeProposers - vc 250000 | 7.6428 ms/op | 6.7146 ms/op | 1.14 | | computeEpochShuffling - vc 250000 | 88.592 ms/op | 82.090 ms/op | 1.08 | | getNextSyncCommittee - vc 250000 | 120.02 ms/op | 109.68 ms/op | 1.09 | | computeSigningRoot for AttestationData | 23.033 us/op | 21.542 us/op | 1.07 | | hash AttestationData serialized data then Buffer.toString(base64) | 1.4807 us/op | 1.1963 us/op | 1.24 | | toHexString serialized data | 831.54 ns/op | 811.20 ns/op | 1.03 | | Buffer.toString(base64) | 175.88 ns/op | 141.45 ns/op | 1.24 | | nodejs block root to RootHex using toHex | 139.07 ns/op | 118.61 ns/op | 1.17 | | nodejs block root to RootHex using toRootHex | 85.872 ns/op | 79.359 ns/op | 1.08 | | browser block root to RootHex using the deprecated toHexString | 215.88 ns/op | 211.87 ns/op | 1.02 | | browser block root to RootHex using toHex | 172.10 ns/op | 167.93 ns/op | 1.02 | | browser block root to RootHex using toRootHex | 154.58 ns/op | 148.10 ns/op | 1.04 |

by benchmarkbot/action