Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: lazy load pending deposit using generator #7584

Open
wants to merge 7 commits into
base: unstable
Choose a base branch
from

Conversation

ensi321
Copy link
Contributor

@ensi321 ensi321 commented Mar 14, 2025

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

@ensi321 ensi321 force-pushed the nc/deposit-generator branch from 6724128 to 8eb6b38 Compare March 25, 2025 04:56
Copy link

codecov bot commented Mar 25, 2025

Codecov Report

Attention: Patch coverage is 3.44828% with 56 lines in your changes missing coverage. Please review.

Project coverage is 50.22%. Comparing base (0329edb) to head (adacb09).

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              
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ensi321 ensi321 marked this pull request as ready for review March 25, 2025 05:36
@ensi321 ensi321 requested a review from a team as a code owner March 25, 2025 05:36
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 6f18b60 Previous: 0329edb 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant