lodestar icon indicating copy to clipboard operation
lodestar copied to clipboard

feat: lazy load pending deposit using generator

Open ensi321 opened this issue 9 months ago • 4 comments

Note: This PR has a dependency on ssz v1.2.0. Staying as draft for now

ensi321 avatar Mar 14 '25 23:03 ensi321

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.

codecov[bot] avatar Mar 25 '25 05:03 codecov[bot]

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

github-actions[bot] avatar Mar 25 '25 06:03 github-actions[bot]

do we still want this? seems to me like we do, cc @twoeths

nflaig avatar May 03 '25 12:05 nflaig

do we still want this? seems to me like we do, cc @twoeths

Yes. Still relevant

ensi321 avatar May 09 '25 01:05 ensi321

Looks like low priority

ensi321 avatar Nov 17 '25 19:11 ensi321