feat: lazy load pending deposit using generator
Note: This PR has a dependency on ssz v1.2.0. Staying as draft for now
Codecov Report
:x: Patch coverage is 3.44828% with 56 lines in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 50.22%. Comparing base (0329edb) to head (adacb09).
:warning: Report is 591 commits behind head on unstable.
Additional details and impacted files
@@ Coverage Diff @@
## unstable #7584 +/- ##
============================================
- Coverage 50.24% 50.22% -0.02%
============================================
Files 604 605 +1
Lines 40466 40485 +19
Branches 2229 2229
============================================
+ Hits 20331 20333 +2
- Misses 20093 20110 +17
Partials 42 42
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
Performance Report
✔️ no performance regression detected
Full benchmark results
| Benchmark suite | Current: 6f18b60dbca4ea65e3ae66cbdadb44850fe716c0 | Previous: 0329edb2c30bb00a844d33b0645f9be71632efcd | Ratio |
|---|---|---|---|
| getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 740.66 us/op | 923.37 us/op | 0.80 |
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 29.747 us/op | 34.595 us/op | 0.86 |
| BLS verify - blst | 871.79 us/op | 1.0821 ms/op | 0.81 |
| BLS verifyMultipleSignatures 3 - blst | 1.2952 ms/op | 2.5478 ms/op | 0.51 |
| BLS verifyMultipleSignatures 8 - blst | 2.3044 ms/op | 2.3786 ms/op | 0.97 |
| BLS verifyMultipleSignatures 32 - blst | 4.3580 ms/op | 7.3623 ms/op | 0.59 |
| BLS verifyMultipleSignatures 64 - blst | 8.0299 ms/op | 10.999 ms/op | 0.73 |
| BLS verifyMultipleSignatures 128 - blst | 15.559 ms/op | 17.011 ms/op | 0.91 |
| BLS deserializing 10000 signatures | 595.16 ms/op | 683.47 ms/op | 0.87 |
| BLS deserializing 100000 signatures | 5.9648 s/op | 6.8029 s/op | 0.88 |
| BLS verifyMultipleSignatures - same message - 3 - blst | 927.17 us/op | 1.5708 ms/op | 0.59 |
| BLS verifyMultipleSignatures - same message - 8 - blst | 1.0822 ms/op | 1.5790 ms/op | 0.69 |
| BLS verifyMultipleSignatures - same message - 32 - blst | 1.6864 ms/op | 1.9381 ms/op | 0.87 |
| BLS verifyMultipleSignatures - same message - 64 - blst | 2.5699 ms/op | 2.8095 ms/op | 0.91 |
| BLS verifyMultipleSignatures - same message - 128 - blst | 4.1785 ms/op | 4.5692 ms/op | 0.91 |
| BLS aggregatePubkeys 32 - blst | 17.499 us/op | 19.279 us/op | 0.91 |
| BLS aggregatePubkeys 128 - blst | 62.227 us/op | 69.161 us/op | 0.90 |
| notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 47.254 ms/op | 69.104 ms/op | 0.68 |
| notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 51.436 ms/op | 54.795 ms/op | 0.94 |
| notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 43.509 ms/op | 58.417 ms/op | 0.74 |
| getSlashingsAndExits - default max | 49.381 us/op | 70.090 us/op | 0.70 |
| getSlashingsAndExits - 2k | 223.88 us/op | 308.20 us/op | 0.73 |
| proposeBlockBody type=full, size=empty | 6.5734 ms/op | 6.9423 ms/op | 0.95 |
| isKnown best case - 1 super set check | 395.00 ns/op | 193.00 ns/op | 2.05 |
| isKnown normal case - 2 super set checks | 387.00 ns/op | 190.00 ns/op | 2.04 |
| isKnown worse case - 16 super set checks | 387.00 ns/op | 190.00 ns/op | 2.04 |
| InMemoryCheckpointStateCache - add get delete | 2.4250 us/op | 2.3590 us/op | 1.03 |
| validate api signedAggregateAndProof - struct | 1.4280 ms/op | 2.5959 ms/op | 0.55 |
| validate gossip signedAggregateAndProof - struct | 1.4087 ms/op | 2.6071 ms/op | 0.54 |
| batch validate gossip attestation - vc 640000 - chunk 32 | 105.30 us/op | 111.77 us/op | 0.94 |
| batch validate gossip attestation - vc 640000 - chunk 64 | 92.076 us/op | 100.32 us/op | 0.92 |
| batch validate gossip attestation - vc 640000 - chunk 128 | 81.195 us/op | 92.902 us/op | 0.87 |
| batch validate gossip attestation - vc 640000 - chunk 256 | 83.205 us/op | 92.360 us/op | 0.90 |
| pickEth1Vote - no votes | 794.73 us/op | 961.72 us/op | 0.83 |
| pickEth1Vote - max votes | 4.3344 ms/op | 5.1190 ms/op | 0.85 |
| pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 9.6838 ms/op | 10.383 ms/op | 0.93 |
| pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 15.205 ms/op | 14.481 ms/op | 1.05 |
| pickEth1Vote - Eth1Data fastSerialize value x2048 | 358.89 us/op | 434.01 us/op | 0.83 |
| pickEth1Vote - Eth1Data fastSerialize tree x2048 | 2.2871 ms/op | 3.0414 ms/op | 0.75 |
| bytes32 toHexString | 523.00 ns/op | 361.00 ns/op | 1.45 |
| bytes32 Buffer.toString(hex) | 407.00 ns/op | 237.00 ns/op | 1.72 |
| bytes32 Buffer.toString(hex) from Uint8Array | 472.00 ns/op | 326.00 ns/op | 1.45 |
| bytes32 Buffer.toString(hex) + 0x | 390.00 ns/op | 232.00 ns/op | 1.68 |
| Object access 1 prop | 0.28300 ns/op | 0.11200 ns/op | 2.53 |
| Map access 1 prop | 0.28700 ns/op | 0.11600 ns/op | 2.47 |
| Object get x1000 | 4.6570 ns/op | 6.3200 ns/op | 0.74 |
| Map get x1000 | 5.1730 ns/op | 6.8740 ns/op | 0.75 |
| Object set x1000 | 18.160 ns/op | 28.006 ns/op | 0.65 |
| Map set x1000 | 15.760 ns/op | 19.125 ns/op | 0.82 |
| Return object 10000 times | 0.27250 ns/op | 0.28180 ns/op | 0.97 |
| Throw Error 10000 times | 3.3480 us/op | 4.0882 us/op | 0.82 |
| toHex | 91.156 ns/op | 135.14 ns/op | 0.67 |
| Buffer.from | 83.149 ns/op | 123.07 ns/op | 0.68 |
| shared Buffer | 56.951 ns/op | 85.418 ns/op | 0.67 |
| fastMsgIdFn sha256 / 200 bytes | 1.8080 us/op | 2.2090 us/op | 0.82 |
| fastMsgIdFn h32 xxhash / 200 bytes | 355.00 ns/op | 289.00 ns/op | 1.23 |
| fastMsgIdFn h64 xxhash / 200 bytes | 426.00 ns/op | 269.00 ns/op | 1.58 |
| fastMsgIdFn sha256 / 1000 bytes | 5.8190 us/op | 7.2050 us/op | 0.81 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 495.00 ns/op | 474.00 ns/op | 1.04 |
| fastMsgIdFn h64 xxhash / 1000 bytes | 476.00 ns/op | 345.00 ns/op | 1.38 |
| fastMsgIdFn sha256 / 10000 bytes | 45.340 us/op | 67.485 us/op | 0.67 |
| fastMsgIdFn h32 xxhash / 10000 bytes | 1.7890 us/op | 1.7980 us/op | 0.99 |
| fastMsgIdFn h64 xxhash / 10000 bytes | 1.2700 us/op | 1.1460 us/op | 1.11 |
| send data - 1000 256B messages | 9.7115 ms/op | 11.963 ms/op | 0.81 |
| send data - 1000 512B messages | 13.279 ms/op | 15.602 ms/op | 0.85 |
| send data - 1000 1024B messages | 20.902 ms/op | 24.386 ms/op | 0.86 |
| send data - 1000 1200B messages | 17.018 ms/op | 19.141 ms/op | 0.89 |
| send data - 1000 2048B messages | 18.688 ms/op | 21.717 ms/op | 0.86 |
| send data - 1000 4096B messages | 17.109 ms/op | 23.504 ms/op | 0.73 |
| send data - 1000 16384B messages | 70.875 ms/op | 65.343 ms/op | 1.08 |
| send data - 1000 65536B messages | 239.19 ms/op | 206.36 ms/op | 1.16 |
| enrSubnets - fastDeserialize 64 bits | 963.00 ns/op | 874.00 ns/op | 1.10 |
| enrSubnets - ssz BitVector 64 bits | 482.00 ns/op | 327.00 ns/op | 1.47 |
| enrSubnets - fastDeserialize 4 bits | 317.00 ns/op | 130.00 ns/op | 2.44 |
| enrSubnets - ssz BitVector 4 bits | 466.00 ns/op | 324.00 ns/op | 1.44 |
| prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 92.714 us/op | 115.82 us/op | 0.80 |
| prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 117.25 us/op | 138.31 us/op | 0.85 |
| prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 170.55 us/op | 197.69 us/op | 0.86 |
| prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 320.51 us/op | 372.40 us/op | 0.86 |
| prioritizePeers score 0:0 att 64-1 sync 4-1 | 378.35 us/op | 451.61 us/op | 0.84 |
| array of 16000 items push then shift | 1.2666 us/op | 1.6239 us/op | 0.78 |
| LinkedList of 16000 items push then shift | 6.1400 ns/op | 6.9110 ns/op | 0.89 |
| array of 16000 items push then pop | 59.749 ns/op | 73.719 ns/op | 0.81 |
| LinkedList of 16000 items push then pop | 6.0050 ns/op | 6.8160 ns/op | 0.88 |
| array of 24000 items push then shift | 1.8648 us/op | 2.3761 us/op | 0.78 |
| LinkedList of 24000 items push then shift | 6.2050 ns/op | 6.8910 ns/op | 0.90 |
| array of 24000 items push then pop | 83.504 ns/op | 99.570 ns/op | 0.84 |
| LinkedList of 24000 items push then pop | 6.0000 ns/op | 6.7790 ns/op | 0.89 |
| intersect bitArray bitLen 8 | 5.3590 ns/op | 6.2930 ns/op | 0.85 |
| intersect array and set length 8 | 32.566 ns/op | 37.310 ns/op | 0.87 |
| intersect bitArray bitLen 128 | 26.323 ns/op | 29.385 ns/op | 0.90 |
| intersect array and set length 128 | 543.01 ns/op | 626.58 ns/op | 0.87 |
| bitArray.getTrueBitIndexes() bitLen 128 | 1.1150 us/op | 984.00 ns/op | 1.13 |
| bitArray.getTrueBitIndexes() bitLen 248 | 1.7580 us/op | 1.7200 us/op | 1.02 |
| bitArray.getTrueBitIndexes() bitLen 512 | 3.2160 us/op | 3.4960 us/op | 0.92 |
| Buffer.concat 32 items | 773.00 ns/op | 605.00 ns/op | 1.28 |
| Uint8Array.set 32 items | 1.0730 us/op | 1.4200 us/op | 0.76 |
| Buffer.copy | 2.3230 us/op | 2.0350 us/op | 1.14 |
| Uint8Array.set - with subarray | 1.5940 us/op | 2.4860 us/op | 0.64 |
| Uint8Array.set - without subarray | 1.0040 us/op | 1.0120 us/op | 0.99 |
| getUint32 - dataview | 374.00 ns/op | 190.00 ns/op | 1.97 |
| getUint32 - manual | 303.00 ns/op | 120.00 ns/op | 2.52 |
| Set add up to 64 items then delete first | 1.7844 us/op | 2.1687 us/op | 0.82 |
| OrderedSet add up to 64 items then delete first | 2.7678 us/op | 3.2217 us/op | 0.86 |
| Set add up to 64 items then delete last | 1.9346 us/op | 2.2901 us/op | 0.84 |
| OrderedSet add up to 64 items then delete last | 3.0351 us/op | 3.7142 us/op | 0.82 |
| Set add up to 64 items then delete middle | 2.1136 us/op | 2.3092 us/op | 0.92 |
| OrderedSet add up to 64 items then delete middle | 4.5467 us/op | 5.1420 us/op | 0.88 |
| Set add up to 128 items then delete first | 4.8269 us/op | 4.8572 us/op | 0.99 |
| OrderedSet add up to 128 items then delete first | 6.8720 us/op | 7.2261 us/op | 0.95 |
| Set add up to 128 items then delete last | 4.7542 us/op | 4.8902 us/op | 0.97 |
| OrderedSet add up to 128 items then delete last | 6.6968 us/op | 7.4340 us/op | 0.90 |
| Set add up to 128 items then delete middle | 4.5986 us/op | 4.7119 us/op | 0.98 |
| OrderedSet add up to 128 items then delete middle | 12.019 us/op | 13.323 us/op | 0.90 |
| Set add up to 256 items then delete first | 7.9238 us/op | 9.7294 us/op | 0.81 |
| OrderedSet add up to 256 items then delete first | 12.252 us/op | 14.737 us/op | 0.83 |
| Set add up to 256 items then delete last | 7.6185 us/op | 9.4150 us/op | 0.81 |
| OrderedSet add up to 256 items then delete last | 11.599 us/op | 14.877 us/op | 0.78 |
| Set add up to 256 items then delete middle | 8.1701 us/op | 9.4019 us/op | 0.87 |
| OrderedSet add up to 256 items then delete middle | 33.705 us/op | 39.332 us/op | 0.86 |
| transfer serialized Status (84 B) | 2.0310 us/op | 2.2950 us/op | 0.88 |
| copy serialized Status (84 B) | 1.2660 us/op | 1.2270 us/op | 1.03 |
| transfer serialized SignedVoluntaryExit (112 B) | 2.0470 us/op | 2.3040 us/op | 0.89 |
| copy serialized SignedVoluntaryExit (112 B) | 1.2720 us/op | 1.2360 us/op | 1.03 |
| transfer serialized ProposerSlashing (416 B) | 2.0840 us/op | 2.4620 us/op | 0.85 |
| copy serialized ProposerSlashing (416 B) | 1.3150 us/op | 1.5210 us/op | 0.86 |
| transfer serialized Attestation (485 B) | 2.1040 us/op | 2.4170 us/op | 0.87 |
| copy serialized Attestation (485 B) | 1.2990 us/op | 2.0770 us/op | 0.63 |
| transfer serialized AttesterSlashing (33232 B) | 2.8640 us/op | 2.5920 us/op | 1.10 |
| copy serialized AttesterSlashing (33232 B) | 2.8780 us/op | 3.6130 us/op | 0.80 |
| transfer serialized Small SignedBeaconBlock (128000 B) | 2.4790 us/op | 3.0640 us/op | 0.81 |
| copy serialized Small SignedBeaconBlock (128000 B) | 5.9750 us/op | 8.5980 us/op | 0.69 |
| transfer serialized Avg SignedBeaconBlock (200000 B) | 2.5170 us/op | 3.6440 us/op | 0.69 |
| copy serialized Avg SignedBeaconBlock (200000 B) | 8.0930 us/op | 12.667 us/op | 0.64 |
| transfer serialized BlobsSidecar (524380 B) | 3.2880 us/op | 3.5740 us/op | 0.92 |
| copy serialized BlobsSidecar (524380 B) | 57.832 us/op | 140.05 us/op | 0.41 |
| transfer serialized Big SignedBeaconBlock (1000000 B) | 3.8180 us/op | 3.8740 us/op | 0.99 |
| copy serialized Big SignedBeaconBlock (1000000 B) | 107.01 us/op | 220.98 us/op | 0.48 |
| pass gossip attestations to forkchoice per slot | 2.4704 ms/op | 2.7470 ms/op | 0.90 |
| forkChoice updateHead vc 100000 bc 64 eq 0 | 411.11 us/op | 455.51 us/op | 0.90 |
| forkChoice updateHead vc 600000 bc 64 eq 0 | 2.4358 ms/op | 2.7979 ms/op | 0.87 |
| forkChoice updateHead vc 1000000 bc 64 eq 0 | 3.9742 ms/op | 4.7744 ms/op | 0.83 |
| forkChoice updateHead vc 600000 bc 320 eq 0 | 2.4017 ms/op | 2.8091 ms/op | 0.85 |
| forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.3552 ms/op | 2.8497 ms/op | 0.83 |
| forkChoice updateHead vc 600000 bc 7200 eq 0 | 2.4519 ms/op | 3.0398 ms/op | 0.81 |
| forkChoice updateHead vc 600000 bc 64 eq 1000 | 9.4169 ms/op | 10.699 ms/op | 0.88 |
| forkChoice updateHead vc 600000 bc 64 eq 10000 | 9.4036 ms/op | 10.628 ms/op | 0.88 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 10.869 ms/op | 13.394 ms/op | 0.81 |
| computeDeltas 500000 validators 300 proto nodes | 3.0348 ms/op | 3.7813 ms/op | 0.80 |
| computeDeltas 500000 validators 1200 proto nodes | 3.1317 ms/op | 3.7735 ms/op | 0.83 |
| computeDeltas 500000 validators 7200 proto nodes | 3.1163 ms/op | 3.7948 ms/op | 0.82 |
| computeDeltas 750000 validators 300 proto nodes | 4.5423 ms/op | 5.6464 ms/op | 0.80 |
| computeDeltas 750000 validators 1200 proto nodes | 4.6216 ms/op | 5.6506 ms/op | 0.82 |
| computeDeltas 750000 validators 7200 proto nodes | 4.7557 ms/op | 5.7279 ms/op | 0.83 |
| computeDeltas 1400000 validators 300 proto nodes | 8.4493 ms/op | 10.574 ms/op | 0.80 |
| computeDeltas 1400000 validators 1200 proto nodes | 8.6044 ms/op | 10.590 ms/op | 0.81 |
| computeDeltas 1400000 validators 7200 proto nodes | 8.5789 ms/op | 10.794 ms/op | 0.79 |
| computeDeltas 2100000 validators 300 proto nodes | 13.117 ms/op | 16.040 ms/op | 0.82 |
| computeDeltas 2100000 validators 1200 proto nodes | 12.709 ms/op | 16.176 ms/op | 0.79 |
| computeDeltas 2100000 validators 7200 proto nodes | 13.129 ms/op | 16.596 ms/op | 0.79 |
| altair processAttestation - 250000 vs - 7PWei normalcase | 1.9316 ms/op | 2.0309 ms/op | 0.95 |
| altair processAttestation - 250000 vs - 7PWei worstcase | 2.9995 ms/op | 2.8672 ms/op | 1.05 |
| altair processAttestation - setStatus - 1/6 committees join | 114.20 us/op | 125.05 us/op | 0.91 |
| altair processAttestation - setStatus - 1/3 committees join | 215.05 us/op | 244.85 us/op | 0.88 |
| altair processAttestation - setStatus - 1/2 committees join | 293.11 us/op | 336.69 us/op | 0.87 |
| altair processAttestation - setStatus - 2/3 committees join | 374.19 us/op | 433.50 us/op | 0.86 |
| altair processAttestation - setStatus - 4/5 committees join | 513.87 us/op | 595.18 us/op | 0.86 |
| altair processAttestation - setStatus - 100% committees join | 617.83 us/op | 706.10 us/op | 0.87 |
| altair processBlock - 250000 vs - 7PWei normalcase | 7.5303 ms/op | 5.5121 ms/op | 1.37 |
| altair processBlock - 250000 vs - 7PWei normalcase hashState | 33.833 ms/op | 51.381 ms/op | 0.66 |
| altair processBlock - 250000 vs - 7PWei worstcase | 31.098 ms/op | 39.099 ms/op | 0.80 |
| altair processBlock - 250000 vs - 7PWei worstcase hashState | 85.359 ms/op | 108.97 ms/op | 0.78 |
| phase0 processBlock - 250000 vs - 7PWei normalcase | 2.2611 ms/op | 1.7164 ms/op | 1.32 |
| phase0 processBlock - 250000 vs - 7PWei worstcase | 24.140 ms/op | 27.993 ms/op | 0.86 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 277.21 us/op | 337.10 us/op | 0.82 |
| getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 4.7340 us/op | 7.5980 us/op | 0.62 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 22.049 us/op | 40.259 us/op | 0.55 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 7.4440 us/op | 11.676 us/op | 0.64 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 3.5580 us/op | 7.4700 us/op | 0.48 |
| getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 113.97 us/op | 168.82 us/op | 0.68 |
| getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 749.10 us/op | 1.9204 ms/op | 0.39 |
| getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.2951 ms/op | 2.6074 ms/op | 0.50 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.0878 ms/op | 2.0207 ms/op | 0.54 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 2.7763 ms/op | 3.5329 ms/op | 0.79 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.0601 ms/op | 2.1573 ms/op | 0.49 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 2.8464 ms/op | 3.3624 ms/op | 0.85 |
| Tree 40 250000 create | 381.12 ms/op | 412.68 ms/op | 0.92 |
| Tree 40 250000 get(125000) | 109.07 ns/op | 146.67 ns/op | 0.74 |
| Tree 40 250000 set(125000) | 1.3283 us/op | 1.4285 us/op | 0.93 |
| Tree 40 250000 toArray() | 20.338 ms/op | 15.529 ms/op | 1.31 |
| Tree 40 250000 iterate all - toArray() + loop | 15.100 ms/op | 15.097 ms/op | 1.00 |
| Tree 40 250000 iterate all - get(i) | 41.772 ms/op | 51.691 ms/op | 0.81 |
| Array 250000 create | 1.9714 ms/op | 2.3538 ms/op | 0.84 |
| Array 250000 clone - spread | 621.87 us/op | 803.70 us/op | 0.77 |
| Array 250000 get(125000) | 0.55900 ns/op | 0.41200 ns/op | 1.36 |
| Array 250000 set(125000) | 0.56400 ns/op | 0.42000 ns/op | 1.34 |
| Array 250000 iterate all - loop | 76.268 us/op | 79.079 us/op | 0.96 |
| phase0 afterProcessEpoch - 250000 vs - 7PWei | 38.380 ms/op | 40.969 ms/op | 0.94 |
| Array.fill - length 1000000 | 2.4139 ms/op | 3.3579 ms/op | 0.72 |
| Array push - length 1000000 | 9.6653 ms/op | 11.841 ms/op | 0.82 |
| Array.get | 0.26293 ns/op | 0.26040 ns/op | 1.01 |
| Uint8Array.get | 0.33993 ns/op | 0.42377 ns/op | 0.80 |
| phase0 beforeProcessEpoch - 250000 vs - 7PWei | 12.110 ms/op | 14.412 ms/op | 0.84 |
| altair processEpoch - mainnet_e81889 | 257.45 ms/op | 316.18 ms/op | 0.81 |
| mainnet_e81889 - altair beforeProcessEpoch | 17.254 ms/op | 20.623 ms/op | 0.84 |
| mainnet_e81889 - altair processJustificationAndFinalization | 4.6410 us/op | 5.3300 us/op | 0.87 |
| mainnet_e81889 - altair processInactivityUpdates | 3.8828 ms/op | 4.5231 ms/op | 0.86 |
| mainnet_e81889 - altair processRewardsAndPenalties | 39.341 ms/op | 52.410 ms/op | 0.75 |
| mainnet_e81889 - altair processRegistryUpdates | 871.00 ns/op | 712.00 ns/op | 1.22 |
| mainnet_e81889 - altair processSlashings | 374.00 ns/op | 183.00 ns/op | 2.04 |
| mainnet_e81889 - altair processEth1DataReset | 403.00 ns/op | 172.00 ns/op | 2.34 |
| mainnet_e81889 - altair processEffectiveBalanceUpdates | 923.21 us/op | 1.2141 ms/op | 0.76 |
| mainnet_e81889 - altair processSlashingsReset | 971.00 ns/op | 1.1200 us/op | 0.87 |
| mainnet_e81889 - altair processRandaoMixesReset | 1.1320 us/op | 1.1830 us/op | 0.96 |
| mainnet_e81889 - altair processHistoricalRootsUpdate | 363.00 ns/op | 183.00 ns/op | 1.98 |
| mainnet_e81889 - altair processParticipationFlagUpdates | 662.00 ns/op | 515.00 ns/op | 1.29 |
| mainnet_e81889 - altair processSyncCommitteeUpdates | 385.00 ns/op | 136.00 ns/op | 2.83 |
| mainnet_e81889 - altair afterProcessEpoch | 39.244 ms/op | 43.405 ms/op | 0.90 |
| capella processEpoch - mainnet_e217614 | 897.48 ms/op | 1.0608 s/op | 0.85 |
| mainnet_e217614 - capella beforeProcessEpoch | 59.586 ms/op | 64.064 ms/op | 0.93 |
| mainnet_e217614 - capella processJustificationAndFinalization | 4.4360 us/op | 5.6260 us/op | 0.79 |
| mainnet_e217614 - capella processInactivityUpdates | 13.357 ms/op | 16.364 ms/op | 0.82 |
| mainnet_e217614 - capella processRewardsAndPenalties | 168.27 ms/op | 221.78 ms/op | 0.76 |
| mainnet_e217614 - capella processRegistryUpdates | 6.3520 us/op | 7.1790 us/op | 0.88 |
| mainnet_e217614 - capella processSlashings | 372.00 ns/op | 185.00 ns/op | 2.01 |
| mainnet_e217614 - capella processEth1DataReset | 359.00 ns/op | 182.00 ns/op | 1.97 |
| mainnet_e217614 - capella processEffectiveBalanceUpdates | 3.1825 ms/op | 4.2455 ms/op | 0.75 |
| mainnet_e217614 - capella processSlashingsReset | 1.1800 us/op | 1.0030 us/op | 1.18 |
| mainnet_e217614 - capella processRandaoMixesReset | 1.4830 us/op | 1.3500 us/op | 1.10 |
| mainnet_e217614 - capella processHistoricalRootsUpdate | 369.00 ns/op | 183.00 ns/op | 2.02 |
| mainnet_e217614 - capella processParticipationFlagUpdates | 674.00 ns/op | 528.00 ns/op | 1.28 |
| mainnet_e217614 - capella afterProcessEpoch | 109.16 ms/op | 116.97 ms/op | 0.93 |
| phase0 processEpoch - mainnet_e58758 | 287.06 ms/op | 304.90 ms/op | 0.94 |
| mainnet_e58758 - phase0 beforeProcessEpoch | 68.925 ms/op | 75.814 ms/op | 0.91 |
| mainnet_e58758 - phase0 processJustificationAndFinalization | 6.1190 us/op | 6.7670 us/op | 0.90 |
| mainnet_e58758 - phase0 processRewardsAndPenalties | 39.765 ms/op | 38.653 ms/op | 1.03 |
| mainnet_e58758 - phase0 processRegistryUpdates | 2.6940 us/op | 3.3740 us/op | 0.80 |
| mainnet_e58758 - phase0 processSlashings | 375.00 ns/op | 190.00 ns/op | 1.97 |
| mainnet_e58758 - phase0 processEth1DataReset | 384.00 ns/op | 207.00 ns/op | 1.86 |
| mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 921.87 us/op | 1.2877 ms/op | 0.72 |
| mainnet_e58758 - phase0 processSlashingsReset | 1.1260 us/op | 1.2220 us/op | 0.92 |
| mainnet_e58758 - phase0 processRandaoMixesReset | 1.5040 us/op | 1.2420 us/op | 1.21 |
| mainnet_e58758 - phase0 processHistoricalRootsUpdate | 386.00 ns/op | 181.00 ns/op | 2.13 |
| mainnet_e58758 - phase0 processParticipationRecordUpdates | 1.1810 us/op | 936.00 ns/op | 1.26 |
| mainnet_e58758 - phase0 afterProcessEpoch | 32.026 ms/op | 37.075 ms/op | 0.86 |
| phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.6202 ms/op | 1.3777 ms/op | 1.18 |
| phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.2960 ms/op | 1.9811 ms/op | 0.65 |
| altair processInactivityUpdates - 250000 normalcase | 15.845 ms/op | 22.043 ms/op | 0.72 |
| altair processInactivityUpdates - 250000 worstcase | 17.498 ms/op | 19.614 ms/op | 0.89 |
| phase0 processRegistryUpdates - 250000 normalcase | 6.1180 us/op | 6.0570 us/op | 1.01 |
| phase0 processRegistryUpdates - 250000 badcase_full_deposits | 307.73 us/op | 300.21 us/op | 1.03 |
| phase0 processRegistryUpdates - 250000 worstcase 0.5 | 101.81 ms/op | 124.50 ms/op | 0.82 |
| altair processRewardsAndPenalties - 250000 normalcase | 27.549 ms/op | 33.494 ms/op | 0.82 |
| altair processRewardsAndPenalties - 250000 worstcase | 25.974 ms/op | 33.639 ms/op | 0.77 |
| phase0 getAttestationDeltas - 250000 normalcase | 5.6097 ms/op | 7.4859 ms/op | 0.75 |
| phase0 getAttestationDeltas - 250000 worstcase | 5.6141 ms/op | 6.1628 ms/op | 0.91 |
| phase0 processSlashings - 250000 worstcase | 88.225 us/op | 125.13 us/op | 0.71 |
| altair processSyncCommitteeUpdates - 250000 | 9.0911 ms/op | 10.897 ms/op | 0.83 |
| BeaconState.hashTreeRoot - No change | 426.00 ns/op | 232.00 ns/op | 1.84 |
| BeaconState.hashTreeRoot - 1 full validator | 61.006 us/op | 101.84 us/op | 0.60 |
| BeaconState.hashTreeRoot - 32 full validator | 737.57 us/op | 1.0095 ms/op | 0.73 |
| BeaconState.hashTreeRoot - 512 full validator | 7.8879 ms/op | 12.919 ms/op | 0.61 |
| BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 90.072 us/op | 121.42 us/op | 0.74 |
| BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.7939 ms/op | 1.3651 ms/op | 1.31 |
| BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 19.265 ms/op | 30.679 ms/op | 0.63 |
| BeaconState.hashTreeRoot - 1 balances | 62.651 us/op | 90.755 us/op | 0.69 |
| BeaconState.hashTreeRoot - 32 balances | 676.36 us/op | 1.1233 ms/op | 0.60 |
| BeaconState.hashTreeRoot - 512 balances | 5.8765 ms/op | 10.845 ms/op | 0.54 |
| BeaconState.hashTreeRoot - 250000 balances | 175.34 ms/op | 201.36 ms/op | 0.87 |
| aggregationBits - 2048 els - zipIndexesInBitList | 18.845 us/op | 22.012 us/op | 0.86 |
| byteArrayEquals 32 | 46.223 ns/op | 52.322 ns/op | 0.88 |
| Buffer.compare 32 | 14.862 ns/op | 16.688 ns/op | 0.89 |
| byteArrayEquals 1024 | 1.2212 us/op | 1.5455 us/op | 0.79 |
| Buffer.compare 1024 | 23.074 ns/op | 24.018 ns/op | 0.96 |
| byteArrayEquals 16384 | 19.183 us/op | 25.195 us/op | 0.76 |
| Buffer.compare 16384 | 193.00 ns/op | 175.88 ns/op | 1.10 |
| byteArrayEquals 123687377 | 147.04 ms/op | 196.26 ms/op | 0.75 |
| Buffer.compare 123687377 | 5.2757 ms/op | 8.2484 ms/op | 0.64 |
| byteArrayEquals 32 - diff last byte | 43.363 ns/op | 53.264 ns/op | 0.81 |
| Buffer.compare 32 - diff last byte | 14.366 ns/op | 17.378 ns/op | 0.83 |
| byteArrayEquals 1024 - diff last byte | 1.1556 us/op | 1.6207 us/op | 0.71 |
| Buffer.compare 1024 - diff last byte | 22.005 ns/op | 25.393 ns/op | 0.87 |
| byteArrayEquals 16384 - diff last byte | 18.439 us/op | 25.856 us/op | 0.71 |
| Buffer.compare 16384 - diff last byte | 154.76 ns/op | 204.79 ns/op | 0.76 |
| byteArrayEquals 123687377 - diff last byte | 140.66 ms/op | 192.02 ms/op | 0.73 |
| Buffer.compare 123687377 - diff last byte | 5.3155 ms/op | 6.1288 ms/op | 0.87 |
| byteArrayEquals 32 - random bytes | 4.5940 ns/op | 5.0890 ns/op | 0.90 |
| Buffer.compare 32 - random bytes | 14.470 ns/op | 17.053 ns/op | 0.85 |
| byteArrayEquals 1024 - random bytes | 4.5870 ns/op | 5.0890 ns/op | 0.90 |
| Buffer.compare 1024 - random bytes | 14.311 ns/op | 17.126 ns/op | 0.84 |
| byteArrayEquals 16384 - random bytes | 4.5830 ns/op | 5.0870 ns/op | 0.90 |
| Buffer.compare 16384 - random bytes | 14.318 ns/op | 16.977 ns/op | 0.84 |
| byteArrayEquals 123687377 - random bytes | 7.2300 ns/op | 6.5000 ns/op | 1.11 |
| Buffer.compare 123687377 - random bytes | 17.080 ns/op | 18.330 ns/op | 0.93 |
| regular array get 100000 times | 28.497 us/op | 32.428 us/op | 0.88 |
| wrappedArray get 100000 times | 28.525 us/op | 32.429 us/op | 0.88 |
| arrayWithProxy get 100000 times | 8.3455 ms/op | 11.782 ms/op | 0.71 |
| ssz.Root.equals | 41.193 ns/op | 45.436 ns/op | 0.91 |
| byteArrayEquals | 40.352 ns/op | 44.569 ns/op | 0.91 |
| Buffer.compare | 8.4290 ns/op | 10.461 ns/op | 0.81 |
| processSlot - 1 slots | 8.8630 us/op | 10.760 us/op | 0.82 |
| processSlot - 32 slots | 2.2019 ms/op | 2.2605 ms/op | 0.97 |
| getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 1.9183 ms/op | 2.8652 ms/op | 0.67 |
| getCommitteeAssignments - req 1 vs - 250000 vc | 1.7630 ms/op | 2.1171 ms/op | 0.83 |
| getCommitteeAssignments - req 100 vs - 250000 vc | 3.4619 ms/op | 4.0669 ms/op | 0.85 |
| getCommitteeAssignments - req 1000 vs - 250000 vc | 3.7032 ms/op | 4.3343 ms/op | 0.85 |
| findModifiedValidators - 10000 modified validators | 738.65 ms/op | 731.05 ms/op | 1.01 |
| findModifiedValidators - 1000 modified validators | 644.92 ms/op | 686.43 ms/op | 0.94 |
| findModifiedValidators - 100 modified validators | 233.86 ms/op | 183.81 ms/op | 1.27 |
| findModifiedValidators - 10 modified validators | 158.82 ms/op | 148.20 ms/op | 1.07 |
| findModifiedValidators - 1 modified validators | 132.47 ms/op | 144.49 ms/op | 0.92 |
| findModifiedValidators - no difference | 126.85 ms/op | 152.33 ms/op | 0.83 |
| compare ViewDUs | 5.9708 s/op | 6.1790 s/op | 0.97 |
| compare each validator Uint8Array | 1.5575 s/op | 1.9555 s/op | 0.80 |
| compare ViewDU to Uint8Array | 730.01 ms/op | 981.97 ms/op | 0.74 |
| migrate state 1000000 validators, 24 modified, 0 new | 811.03 ms/op | 943.58 ms/op | 0.86 |
| migrate state 1000000 validators, 1700 modified, 1000 new | 1.0363 s/op | 1.2456 s/op | 0.83 |
| migrate state 1000000 validators, 3400 modified, 2000 new | 1.3848 s/op | 1.3422 s/op | 1.03 |
| migrate state 1500000 validators, 24 modified, 0 new | 870.36 ms/op | 984.07 ms/op | 0.88 |
| migrate state 1500000 validators, 1700 modified, 1000 new | 1.0475 s/op | 1.2375 s/op | 0.85 |
| migrate state 1500000 validators, 3400 modified, 2000 new | 1.3176 s/op | 1.3157 s/op | 1.00 |
| RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.7500 ns/op | 4.1300 ns/op | 1.39 |
| state getBlockRootAtSlot - 250000 vs - 7PWei | 514.48 ns/op | 510.38 ns/op | 1.01 |
| naive computeProposerIndex 100000 validators | 46.947 ms/op | 50.273 ms/op | 0.93 |
| computeProposerIndex 100000 validators | 1.3083 ms/op | 1.4616 ms/op | 0.90 |
| naiveGetNextSyncCommitteeIndices 1000 validators | 6.4023 s/op | 7.3761 s/op | 0.87 |
| getNextSyncCommitteeIndices 1000 validators | 94.705 ms/op | 114.48 ms/op | 0.83 |
| naiveGetNextSyncCommitteeIndices 10000 validators | 6.7712 s/op | 7.3520 s/op | 0.92 |
| getNextSyncCommitteeIndices 10000 validators | 93.652 ms/op | 114.03 ms/op | 0.82 |
| naiveGetNextSyncCommitteeIndices 100000 validators | 7.0226 s/op | 7.2632 s/op | 0.97 |
| getNextSyncCommitteeIndices 100000 validators | 97.594 ms/op | 117.04 ms/op | 0.83 |
| naive computeShuffledIndex 100000 validators | 23.780 s/op | 24.056 s/op | 0.99 |
| cached computeShuffledIndex 100000 validators | 454.48 ms/op | 547.14 ms/op | 0.83 |
| naive computeShuffledIndex 2000000 validators | 404.06 s/op | 481.52 s/op | 0.84 |
| cached computeShuffledIndex 2000000 validators | 16.010 s/op | 29.271 s/op | 0.55 |
| computeProposers - vc 250000 | 510.24 us/op | 583.61 us/op | 0.87 |
| computeEpochShuffling - vc 250000 | 37.503 ms/op | 41.632 ms/op | 0.90 |
| getNextSyncCommittee - vc 250000 | 9.0970 ms/op | 10.209 ms/op | 0.89 |
| computeSigningRoot for AttestationData | 18.997 us/op | 20.830 us/op | 0.91 |
| hash AttestationData serialized data then Buffer.toString(base64) | 1.1265 us/op | 1.5781 us/op | 0.71 |
| toHexString serialized data | 969.15 ns/op | 1.0963 us/op | 0.88 |
| Buffer.toString(base64) | 112.14 ns/op | 164.13 ns/op | 0.68 |
| nodejs block root to RootHex using toHex | 111.06 ns/op | 148.13 ns/op | 0.75 |
| nodejs block root to RootHex using toRootHex | 73.815 ns/op | 86.133 ns/op | 0.86 |
| browser block root to RootHex using the deprecated toHexString | 195.38 ns/op | 210.08 ns/op | 0.93 |
| browser block root to RootHex using toHex | 156.55 ns/op | 170.19 ns/op | 0.92 |
| browser block root to RootHex using toRootHex | 144.60 ns/op | 159.64 ns/op | 0.91 |
by benchmarkbot/action
do we still want this? seems to me like we do, cc @twoeths
do we still want this? seems to me like we do, cc @twoeths
Yes. Still relevant
Looks like low priority