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

chore: revert back to previous getPendingBalanceToWithdraw implementation #7419

Merged
merged 1 commit into from
Feb 3, 2025

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Feb 1, 2025

Since ChainSafe/ssz#456 it's possible to use getAllReadonly() with uncommited changes. This PR essential reverts changes done in #7375 as it causes more memory allocation which is not ideal.

@nflaig nflaig requested a review from a team as a code owner February 1, 2025 22:28
Copy link

codecov bot commented Feb 1, 2025

Codecov Report

Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 50.26%. Comparing base (7982031) to head (c57a296).
Report is 2 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #7419   +/-   ##
=========================================
  Coverage     50.26%   50.26%           
=========================================
  Files           602      602           
  Lines         40376    40375    -1     
  Branches       2206     2206           
=========================================
  Hits          20293    20293           
+ Misses        20043    20042    -1     
  Partials         40       40           

Copy link
Contributor

github-actions bot commented Feb 1, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: c41e32b Previous: 7982031 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 727.61 us/op 795.93 us/op 0.91
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 30.411 us/op 30.864 us/op 0.99
BLS verify - blst 905.16 us/op 881.25 us/op 1.03
BLS verifyMultipleSignatures 3 - blst 1.6591 ms/op 1.1959 ms/op 1.39
BLS verifyMultipleSignatures 8 - blst 2.0222 ms/op 2.0342 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst 4.3748 ms/op 4.3855 ms/op 1.00
BLS verifyMultipleSignatures 64 - blst 8.0215 ms/op 10.153 ms/op 0.79
BLS verifyMultipleSignatures 128 - blst 15.620 ms/op 16.003 ms/op 0.98
BLS deserializing 10000 signatures 592.42 ms/op 639.75 ms/op 0.93
BLS deserializing 100000 signatures 5.9500 s/op 6.3466 s/op 0.94
BLS verifyMultipleSignatures - same message - 3 - blst 942.43 us/op 912.50 us/op 1.03
BLS verifyMultipleSignatures - same message - 8 - blst 1.0573 ms/op 1.0615 ms/op 1.00
BLS verifyMultipleSignatures - same message - 32 - blst 1.6816 ms/op 1.6351 ms/op 1.03
BLS verifyMultipleSignatures - same message - 64 - blst 2.5437 ms/op 2.5388 ms/op 1.00
BLS verifyMultipleSignatures - same message - 128 - blst 4.1757 ms/op 4.1676 ms/op 1.00
BLS aggregatePubkeys 32 - blst 17.034 us/op 17.680 us/op 0.96
BLS aggregatePubkeys 128 - blst 59.334 us/op 62.511 us/op 0.95
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 38.712 ms/op 45.499 ms/op 0.85
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 39.914 ms/op 39.918 ms/op 1.00
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 30.498 ms/op 32.529 ms/op 0.94
getSlashingsAndExits - default max 54.608 us/op 55.968 us/op 0.98
getSlashingsAndExits - 2k 253.59 us/op 315.80 us/op 0.80
proposeBlockBody type=full, size=empty 4.0398 ms/op 5.1521 ms/op 0.78
isKnown best case - 1 super set check 383.00 ns/op 398.00 ns/op 0.96
isKnown normal case - 2 super set checks 375.00 ns/op 394.00 ns/op 0.95
isKnown worse case - 16 super set checks 378.00 ns/op 391.00 ns/op 0.97
InMemoryCheckpointStateCache - add get delete 2.4090 us/op 2.3930 us/op 1.01
validate api signedAggregateAndProof - struct 1.5946 ms/op 1.5242 ms/op 1.05
validate gossip signedAggregateAndProof - struct 1.8463 ms/op 1.5156 ms/op 1.22
batch validate gossip attestation - vc 640000 - chunk 32 110.15 us/op 113.21 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 64 94.270 us/op 95.986 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 128 86.190 us/op 87.560 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 256 88.707 us/op 90.840 us/op 0.98
pickEth1Vote - no votes 788.68 us/op 776.47 us/op 1.02
pickEth1Vote - max votes 6.0860 ms/op 7.5267 ms/op 0.81
pickEth1Vote - Eth1Data hashTreeRoot value x2048 17.207 ms/op 12.267 ms/op 1.40
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 22.030 ms/op 21.768 ms/op 1.01
pickEth1Vote - Eth1Data fastSerialize value x2048 353.31 us/op 336.32 us/op 1.05
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.6398 ms/op 3.1583 ms/op 0.84
bytes32 toHexString 530.00 ns/op 653.00 ns/op 0.81
bytes32 Buffer.toString(hex) 398.00 ns/op 437.00 ns/op 0.91
bytes32 Buffer.toString(hex) from Uint8Array 454.00 ns/op 477.00 ns/op 0.95
bytes32 Buffer.toString(hex) + 0x 382.00 ns/op 404.00 ns/op 0.95
Object access 1 prop 0.27700 ns/op 0.29400 ns/op 0.94
Map access 1 prop 0.28500 ns/op 0.30400 ns/op 0.94
Object get x1000 4.6720 ns/op 4.9490 ns/op 0.94
Map get x1000 5.2870 ns/op 5.5320 ns/op 0.96
Object set x1000 18.743 ns/op 20.201 ns/op 0.93
Map set x1000 16.303 ns/op 16.763 ns/op 0.97
Return object 10000 times 0.29150 ns/op 0.29590 ns/op 0.99
Throw Error 10000 times 3.3881 us/op 3.6588 us/op 0.93
toHex 104.76 ns/op 102.13 ns/op 1.03
Buffer.from 97.564 ns/op 89.946 ns/op 1.08
shared Buffer 66.458 ns/op 60.720 ns/op 1.09
fastMsgIdFn sha256 / 200 bytes 1.9190 us/op 1.8740 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 385.00 ns/op 371.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 200 bytes 432.00 ns/op 419.00 ns/op 1.03
fastMsgIdFn sha256 / 1000 bytes 5.7460 us/op 5.5950 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 505.00 ns/op 487.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 1000 bytes 656.00 ns/op 483.00 ns/op 1.36
fastMsgIdFn sha256 / 10000 bytes 45.620 us/op 47.157 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.7590 us/op 1.7890 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.2390 us/op 1.2490 us/op 0.99
send data - 1000 256B messages 9.5996 ms/op 11.600 ms/op 0.83
send data - 1000 512B messages 12.934 ms/op 15.825 ms/op 0.82
send data - 1000 1024B messages 20.892 ms/op 26.275 ms/op 0.80
send data - 1000 1200B messages 16.313 ms/op 21.962 ms/op 0.74
send data - 1000 2048B messages 14.425 ms/op 23.492 ms/op 0.61
send data - 1000 4096B messages 16.595 ms/op 26.181 ms/op 0.63
send data - 1000 16384B messages 42.838 ms/op 50.114 ms/op 0.85
send data - 1000 65536B messages 231.59 ms/op 283.89 ms/op 0.82
enrSubnets - fastDeserialize 64 bits 969.00 ns/op 976.00 ns/op 0.99
enrSubnets - ssz BitVector 64 bits 491.00 ns/op 513.00 ns/op 0.96
enrSubnets - fastDeserialize 4 bits 317.00 ns/op 335.00 ns/op 0.95
enrSubnets - ssz BitVector 4 bits 494.00 ns/op 601.00 ns/op 0.82
prioritizePeers score -10:0 att 32-0.1 sync 2-0 92.848 us/op 102.79 us/op 0.90
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 115.75 us/op 127.45 us/op 0.91
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 169.44 us/op 212.55 us/op 0.80
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 313.26 us/op 327.09 us/op 0.96
prioritizePeers score 0:0 att 64-1 sync 4-1 374.28 us/op 394.73 us/op 0.95
array of 16000 items push then shift 1.2716 us/op 1.2303 us/op 1.03
LinkedList of 16000 items push then shift 6.1240 ns/op 7.4120 ns/op 0.83
array of 16000 items push then pop 61.141 ns/op 67.187 ns/op 0.91
LinkedList of 16000 items push then pop 6.0310 ns/op 6.2000 ns/op 0.97
array of 24000 items push then shift 1.8758 us/op 1.8479 us/op 1.02
LinkedList of 24000 items push then shift 6.1870 ns/op 7.1250 ns/op 0.87
array of 24000 items push then pop 84.210 ns/op 99.835 ns/op 0.84
LinkedList of 24000 items push then pop 6.0300 ns/op 6.3650 ns/op 0.95
intersect bitArray bitLen 8 5.5250 ns/op 11.419 ns/op 0.48
intersect array and set length 8 32.662 ns/op 65.433 ns/op 0.50
intersect bitArray bitLen 128 26.254 ns/op 26.755 ns/op 0.98
intersect array and set length 128 540.46 ns/op 540.39 ns/op 1.00
bitArray.getTrueBitIndexes() bitLen 128 1.1300 us/op 1.2120 us/op 0.93
bitArray.getTrueBitIndexes() bitLen 248 1.7570 us/op 1.9870 us/op 0.88
bitArray.getTrueBitIndexes() bitLen 512 3.2280 us/op 3.8630 us/op 0.84
Buffer.concat 32 items 769.00 ns/op 841.00 ns/op 0.91
Uint8Array.set 32 items 1.0320 us/op 1.5380 us/op 0.67
Buffer.copy 2.0260 us/op 2.4300 us/op 0.83
Uint8Array.set - with subarray 1.6120 us/op 2.4060 us/op 0.67
Uint8Array.set - without subarray 1.0030 us/op 1.4350 us/op 0.70
getUint32 - dataview 374.00 ns/op 376.00 ns/op 0.99
getUint32 - manual 307.00 ns/op 306.00 ns/op 1.00
Set add up to 64 items then delete first 1.7825 us/op 2.3614 us/op 0.75
OrderedSet add up to 64 items then delete first 2.7547 us/op 3.8436 us/op 0.72
Set add up to 64 items then delete last 1.8705 us/op 2.3513 us/op 0.80
OrderedSet add up to 64 items then delete last 3.1537 us/op 4.2802 us/op 0.74
Set add up to 64 items then delete middle 2.0634 us/op 2.6458 us/op 0.78
OrderedSet add up to 64 items then delete middle 4.5870 us/op 5.7143 us/op 0.80
Set add up to 128 items then delete first 3.9665 us/op 5.1558 us/op 0.77
OrderedSet add up to 128 items then delete first 5.9511 us/op 8.6711 us/op 0.69
Set add up to 128 items then delete last 3.9390 us/op 4.9183 us/op 0.80
OrderedSet add up to 128 items then delete last 6.1334 us/op 8.1924 us/op 0.75
Set add up to 128 items then delete middle 3.9319 us/op 4.9898 us/op 0.79
OrderedSet add up to 128 items then delete middle 11.638 us/op 14.153 us/op 0.82
Set add up to 256 items then delete first 7.7502 us/op 10.678 us/op 0.73
OrderedSet add up to 256 items then delete first 11.712 us/op 17.273 us/op 0.68
Set add up to 256 items then delete last 7.7710 us/op 9.9844 us/op 0.78
OrderedSet add up to 256 items then delete last 12.019 us/op 16.152 us/op 0.74
Set add up to 256 items then delete middle 7.6909 us/op 9.9895 us/op 0.77
OrderedSet add up to 256 items then delete middle 34.515 us/op 41.454 us/op 0.83
transfer serialized Status (84 B) 1.9760 us/op 2.5050 us/op 0.79
copy serialized Status (84 B) 1.2200 us/op 1.9220 us/op 0.63
transfer serialized SignedVoluntaryExit (112 B) 1.9560 us/op 2.6210 us/op 0.75
copy serialized SignedVoluntaryExit (112 B) 1.3210 us/op 1.9170 us/op 0.69
transfer serialized ProposerSlashing (416 B) 2.0230 us/op 2.8730 us/op 0.70
copy serialized ProposerSlashing (416 B) 1.3120 us/op 2.0790 us/op 0.63
transfer serialized Attestation (485 B) 1.9650 us/op 3.0570 us/op 0.64
copy serialized Attestation (485 B) 1.3580 us/op 2.0610 us/op 0.66
transfer serialized AttesterSlashing (33232 B) 2.1000 us/op 3.2310 us/op 0.65
copy serialized AttesterSlashing (33232 B) 2.5480 us/op 5.1610 us/op 0.49
transfer serialized Small SignedBeaconBlock (128000 B) 2.1680 us/op 3.3670 us/op 0.64
copy serialized Small SignedBeaconBlock (128000 B) 5.6620 us/op 13.121 us/op 0.43
transfer serialized Avg SignedBeaconBlock (200000 B) 2.2900 us/op 3.5930 us/op 0.64
copy serialized Avg SignedBeaconBlock (200000 B) 8.0110 us/op 20.446 us/op 0.39
transfer serialized BlobsSidecar (524380 B) 3.2310 us/op 6.2570 us/op 0.52
copy serialized BlobsSidecar (524380 B) 122.59 us/op 87.037 us/op 1.41
transfer serialized Big SignedBeaconBlock (1000000 B) 3.5770 us/op 5.0960 us/op 0.70
copy serialized Big SignedBeaconBlock (1000000 B) 256.75 us/op 118.47 us/op 2.17
pass gossip attestations to forkchoice per slot 2.2838 ms/op 2.4126 ms/op 0.95
forkChoice updateHead vc 100000 bc 64 eq 0 379.52 us/op 357.04 us/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 0 2.3078 ms/op 2.3709 ms/op 0.97
forkChoice updateHead vc 1000000 bc 64 eq 0 3.6849 ms/op 4.1560 ms/op 0.89
forkChoice updateHead vc 600000 bc 320 eq 0 2.2673 ms/op 2.4172 ms/op 0.94
forkChoice updateHead vc 600000 bc 1200 eq 0 2.3014 ms/op 2.4210 ms/op 0.95
forkChoice updateHead vc 600000 bc 7200 eq 0 2.3042 ms/op 2.9020 ms/op 0.79
forkChoice updateHead vc 600000 bc 64 eq 1000 8.8952 ms/op 9.2432 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 10000 8.7661 ms/op 9.1213 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 10.527 ms/op 12.069 ms/op 0.87
computeDeltas 500000 validators 300 proto nodes 3.0781 ms/op 3.2642 ms/op 0.94
computeDeltas 500000 validators 1200 proto nodes 3.0852 ms/op 3.1869 ms/op 0.97
computeDeltas 500000 validators 7200 proto nodes 3.1691 ms/op 3.0804 ms/op 1.03
computeDeltas 750000 validators 300 proto nodes 4.6906 ms/op 5.0519 ms/op 0.93
computeDeltas 750000 validators 1200 proto nodes 4.6477 ms/op 4.9986 ms/op 0.93
computeDeltas 750000 validators 7200 proto nodes 4.6730 ms/op 4.8697 ms/op 0.96
computeDeltas 1400000 validators 300 proto nodes 8.8094 ms/op 9.2848 ms/op 0.95
computeDeltas 1400000 validators 1200 proto nodes 8.9408 ms/op 9.6495 ms/op 0.93
computeDeltas 1400000 validators 7200 proto nodes 8.6428 ms/op 9.5530 ms/op 0.90
computeDeltas 2100000 validators 300 proto nodes 12.766 ms/op 14.150 ms/op 0.90
computeDeltas 2100000 validators 1200 proto nodes 13.353 ms/op 13.497 ms/op 0.99
computeDeltas 2100000 validators 7200 proto nodes 13.429 ms/op 13.777 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 1.6245 ms/op 1.8420 ms/op 0.88
altair processAttestation - 250000 vs - 7PWei worstcase 2.4353 ms/op 3.4327 ms/op 0.71
altair processAttestation - setStatus - 1/6 committees join 98.911 us/op 115.12 us/op 0.86
altair processAttestation - setStatus - 1/3 committees join 190.06 us/op 195.25 us/op 0.97
altair processAttestation - setStatus - 1/2 committees join 256.55 us/op 301.77 us/op 0.85
altair processAttestation - setStatus - 2/3 committees join 350.76 us/op 376.10 us/op 0.93
altair processAttestation - setStatus - 4/5 committees join 492.27 us/op 524.77 us/op 0.94
altair processAttestation - setStatus - 100% committees join 591.36 us/op 620.24 us/op 0.95
altair processBlock - 250000 vs - 7PWei normalcase 4.7138 ms/op 4.8052 ms/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase hashState 31.448 ms/op 36.296 ms/op 0.87
altair processBlock - 250000 vs - 7PWei worstcase 37.498 ms/op 44.104 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase hashState 83.648 ms/op 91.117 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6133 ms/op 1.7090 ms/op 0.94
phase0 processBlock - 250000 vs - 7PWei worstcase 21.858 ms/op 26.796 ms/op 0.82
altair processEth1Data - 250000 vs - 7PWei normalcase 285.64 us/op 263.65 us/op 1.08
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 4.8410 us/op 6.0110 us/op 0.81
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 36.209 us/op 29.064 us/op 1.25
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 7.9050 us/op 8.1400 us/op 0.97
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 3.0200 us/op 6.3050 us/op 0.48
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 81.262 us/op 120.30 us/op 0.68
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.2653 ms/op 784.49 us/op 1.61
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.2525 ms/op 1.0893 ms/op 1.15
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.1718 ms/op 1.6109 ms/op 0.73
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.5746 ms/op 3.3642 ms/op 0.77
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.1886 ms/op 1.0941 ms/op 1.09
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.3891 ms/op 3.6101 ms/op 0.94
Tree 40 250000 create 352.00 ms/op 622.31 ms/op 0.57
Tree 40 250000 get(125000) 115.69 ns/op 109.89 ns/op 1.05
Tree 40 250000 set(125000) 1.3712 us/op 2.2597 us/op 0.61
Tree 40 250000 toArray() 14.824 ms/op 22.825 ms/op 0.65
Tree 40 250000 iterate all - toArray() + loop 13.463 ms/op 21.115 ms/op 0.64
Tree 40 250000 iterate all - get(i) 47.531 ms/op 53.794 ms/op 0.88
Array 250000 create 2.3337 ms/op 3.7523 ms/op 0.62
Array 250000 clone - spread 621.29 us/op 682.13 us/op 0.91
Array 250000 get(125000) 0.57400 ns/op 0.57800 ns/op 0.99
Array 250000 set(125000) 0.58200 ns/op 0.58700 ns/op 0.99
Array 250000 iterate all - loop 76.706 us/op 83.449 us/op 0.92
phase0 afterProcessEpoch - 250000 vs - 7PWei 40.773 ms/op 40.582 ms/op 1.00
Array.fill - length 1000000 2.3728 ms/op 4.6708 ms/op 0.51
Array push - length 1000000 10.776 ms/op 10.332 ms/op 1.04
Array.get 0.25099 ns/op 0.26558 ns/op 0.95
Uint8Array.get 0.33411 ns/op 0.34943 ns/op 0.96
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.216 ms/op 18.447 ms/op 0.88
altair processEpoch - mainnet_e81889 219.79 ms/op 301.58 ms/op 0.73
mainnet_e81889 - altair beforeProcessEpoch 17.070 ms/op 18.430 ms/op 0.93
mainnet_e81889 - altair processJustificationAndFinalization 4.3030 us/op 5.3680 us/op 0.80
mainnet_e81889 - altair processInactivityUpdates 3.1843 ms/op 3.4914 ms/op 0.91
mainnet_e81889 - altair processRewardsAndPenalties 46.014 ms/op 49.965 ms/op 0.92
mainnet_e81889 - altair processRegistryUpdates 955.00 ns/op 903.00 ns/op 1.06
mainnet_e81889 - altair processSlashings 397.00 ns/op 412.00 ns/op 0.96
mainnet_e81889 - altair processEth1DataReset 402.00 ns/op 403.00 ns/op 1.00
mainnet_e81889 - altair processEffectiveBalanceUpdates 939.38 us/op 959.60 us/op 0.98
mainnet_e81889 - altair processSlashingsReset 1.1110 us/op 1.0910 us/op 1.02
mainnet_e81889 - altair processRandaoMixesReset 1.3240 us/op 1.3030 us/op 1.02
mainnet_e81889 - altair processHistoricalRootsUpdate 405.00 ns/op 396.00 ns/op 1.02
mainnet_e81889 - altair processParticipationFlagUpdates 761.00 ns/op 735.00 ns/op 1.04
mainnet_e81889 - altair processSyncCommitteeUpdates 360.00 ns/op 361.00 ns/op 1.00
mainnet_e81889 - altair afterProcessEpoch 42.514 ms/op 43.609 ms/op 0.97
capella processEpoch - mainnet_e217614 853.08 ms/op 1.1084 s/op 0.77
mainnet_e217614 - capella beforeProcessEpoch 64.946 ms/op 75.123 ms/op 0.86
mainnet_e217614 - capella processJustificationAndFinalization 4.8230 us/op 5.0060 us/op 0.96
mainnet_e217614 - capella processInactivityUpdates 15.252 ms/op 16.592 ms/op 0.92
mainnet_e217614 - capella processRewardsAndPenalties 208.08 ms/op 198.38 ms/op 1.05
mainnet_e217614 - capella processRegistryUpdates 7.6080 us/op 7.5570 us/op 1.01
mainnet_e217614 - capella processSlashings 423.00 ns/op 502.00 ns/op 0.84
mainnet_e217614 - capella processEth1DataReset 393.00 ns/op 504.00 ns/op 0.78
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.1575 ms/op 17.392 ms/op 0.24
mainnet_e217614 - capella processSlashingsReset 1.1300 us/op 1.2380 us/op 0.91
mainnet_e217614 - capella processRandaoMixesReset 1.3630 us/op 1.3980 us/op 0.97
mainnet_e217614 - capella processHistoricalRootsUpdate 398.00 ns/op 481.00 ns/op 0.83
mainnet_e217614 - capella processParticipationFlagUpdates 806.00 ns/op 862.00 ns/op 0.94
mainnet_e217614 - capella afterProcessEpoch 105.47 ms/op 106.92 ms/op 0.99
phase0 processEpoch - mainnet_e58758 224.58 ms/op 365.06 ms/op 0.62
mainnet_e58758 - phase0 beforeProcessEpoch 61.132 ms/op 95.620 ms/op 0.64
mainnet_e58758 - phase0 processJustificationAndFinalization 5.7800 us/op 5.7320 us/op 1.01
mainnet_e58758 - phase0 processRewardsAndPenalties 34.862 ms/op 39.956 ms/op 0.87
mainnet_e58758 - phase0 processRegistryUpdates 3.8500 us/op 2.9520 us/op 1.30
mainnet_e58758 - phase0 processSlashings 404.00 ns/op 447.00 ns/op 0.90
mainnet_e58758 - phase0 processEth1DataReset 414.00 ns/op 489.00 ns/op 0.85
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 871.65 us/op 870.12 us/op 1.00
mainnet_e58758 - phase0 processSlashingsReset 1.2670 us/op 1.3060 us/op 0.97
mainnet_e58758 - phase0 processRandaoMixesReset 1.7210 us/op 1.5800 us/op 1.09
mainnet_e58758 - phase0 processHistoricalRootsUpdate 404.00 ns/op 420.00 ns/op 0.96
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2390 us/op 1.4810 us/op 0.84
mainnet_e58758 - phase0 afterProcessEpoch 37.330 ms/op 38.447 ms/op 0.97
phase0 processEffectiveBalanceUpdates - 250000 normalcase 993.89 us/op 1.0238 ms/op 0.97
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.1940 ms/op 1.5357 ms/op 2.08
altair processInactivityUpdates - 250000 normalcase 16.277 ms/op 16.810 ms/op 0.97
altair processInactivityUpdates - 250000 worstcase 18.984 ms/op 19.878 ms/op 0.96
phase0 processRegistryUpdates - 250000 normalcase 3.1710 us/op 7.8440 us/op 0.40
phase0 processRegistryUpdates - 250000 badcase_full_deposits 297.59 us/op 310.63 us/op 0.96
phase0 processRegistryUpdates - 250000 worstcase 0.5 95.262 ms/op 97.955 ms/op 0.97
altair processRewardsAndPenalties - 250000 normalcase 36.134 ms/op 42.920 ms/op 0.84
altair processRewardsAndPenalties - 250000 worstcase 37.262 ms/op 33.813 ms/op 1.10
phase0 getAttestationDeltas - 250000 normalcase 6.6005 ms/op 18.005 ms/op 0.37
phase0 getAttestationDeltas - 250000 worstcase 12.835 ms/op 6.6229 ms/op 1.94
phase0 processSlashings - 250000 worstcase 92.264 us/op 99.224 us/op 0.93
altair processSyncCommitteeUpdates - 250000 89.304 ms/op 99.509 ms/op 0.90
BeaconState.hashTreeRoot - No change 446.00 ns/op 451.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 60.091 us/op 66.260 us/op 0.91
BeaconState.hashTreeRoot - 32 full validator 634.25 us/op 899.82 us/op 0.70
BeaconState.hashTreeRoot - 512 full validator 8.7458 ms/op 8.5446 ms/op 1.02
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 74.721 us/op 91.999 us/op 0.81
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0637 ms/op 1.3112 ms/op 0.81
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.730 ms/op 19.218 ms/op 0.92
BeaconState.hashTreeRoot - 1 balances 57.411 us/op 65.318 us/op 0.88
BeaconState.hashTreeRoot - 32 balances 534.51 us/op 576.80 us/op 0.93
BeaconState.hashTreeRoot - 512 balances 6.8572 ms/op 6.3027 ms/op 1.09
BeaconState.hashTreeRoot - 250000 balances 138.53 ms/op 137.10 ms/op 1.01
aggregationBits - 2048 els - zipIndexesInBitList 19.737 us/op 21.433 us/op 0.92
byteArrayEquals 32 46.062 ns/op 47.044 ns/op 0.98
Buffer.compare 32 14.553 ns/op 15.744 ns/op 0.92
byteArrayEquals 1024 1.2095 us/op 1.3068 us/op 0.93
Buffer.compare 1024 22.614 ns/op 24.500 ns/op 0.92
byteArrayEquals 16384 19.147 us/op 20.706 us/op 0.92
Buffer.compare 16384 165.91 ns/op 184.35 ns/op 0.90
byteArrayEquals 123687377 154.11 ms/op 155.53 ms/op 0.99
Buffer.compare 123687377 5.7294 ms/op 5.2423 ms/op 1.09
byteArrayEquals 32 - diff last byte 48.743 ns/op 47.886 ns/op 1.02
Buffer.compare 32 - diff last byte 16.131 ns/op 16.894 ns/op 0.95
byteArrayEquals 1024 - diff last byte 1.2916 us/op 1.2732 us/op 1.01
Buffer.compare 1024 - diff last byte 23.325 ns/op 25.136 ns/op 0.93
byteArrayEquals 16384 - diff last byte 20.542 us/op 21.539 us/op 0.95
Buffer.compare 16384 - diff last byte 190.64 ns/op 177.03 ns/op 1.08
byteArrayEquals 123687377 - diff last byte 157.98 ms/op 155.41 ms/op 1.02
Buffer.compare 123687377 - diff last byte 6.6222 ms/op 7.0310 ms/op 0.94
byteArrayEquals 32 - random bytes 4.9530 ns/op 5.0300 ns/op 0.98
Buffer.compare 32 - random bytes 15.820 ns/op 16.035 ns/op 0.99
byteArrayEquals 1024 - random bytes 5.0130 ns/op 4.9950 ns/op 1.00
Buffer.compare 1024 - random bytes 15.581 ns/op 15.721 ns/op 0.99
byteArrayEquals 16384 - random bytes 5.0280 ns/op 5.0030 ns/op 1.00
Buffer.compare 16384 - random bytes 15.604 ns/op 15.833 ns/op 0.99
byteArrayEquals 123687377 - random bytes 7.9200 ns/op 7.9400 ns/op 1.00
Buffer.compare 123687377 - random bytes 18.550 ns/op 18.730 ns/op 0.99
regular array get 100000 times 31.011 us/op 31.439 us/op 0.99
wrappedArray get 100000 times 31.107 us/op 31.329 us/op 0.99
arrayWithProxy get 100000 times 9.5499 ms/op 9.3698 ms/op 1.02
ssz.Root.equals 42.960 ns/op 45.128 ns/op 0.95
byteArrayEquals 43.796 ns/op 44.481 ns/op 0.98
Buffer.compare 9.0630 ns/op 9.1860 ns/op 0.99
processSlot - 1 slots 9.8560 us/op 11.294 us/op 0.87
processSlot - 32 slots 3.4597 ms/op 2.5699 ms/op 1.35
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 59.259 ms/op 60.160 ms/op 0.99
getCommitteeAssignments - req 1 vs - 250000 vc 1.7994 ms/op 1.8735 ms/op 0.96
getCommitteeAssignments - req 100 vs - 250000 vc 3.5070 ms/op 3.7171 ms/op 0.94
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7201 ms/op 3.9352 ms/op 0.95
findModifiedValidators - 10000 modified validators 889.53 ms/op 1.0185 s/op 0.87
findModifiedValidators - 1000 modified validators 729.30 ms/op 747.35 ms/op 0.98
findModifiedValidators - 100 modified validators 178.87 ms/op 358.75 ms/op 0.50
findModifiedValidators - 10 modified validators 147.71 ms/op 261.07 ms/op 0.57
findModifiedValidators - 1 modified validators 154.15 ms/op 179.52 ms/op 0.86
findModifiedValidators - no difference 161.29 ms/op 155.72 ms/op 1.04
compare ViewDUs 6.7939 s/op 6.6545 s/op 1.02
compare each validator Uint8Array 1.1110 s/op 1.4128 s/op 0.79
compare ViewDU to Uint8Array 967.34 ms/op 733.08 ms/op 1.32
migrate state 1000000 validators, 24 modified, 0 new 876.95 ms/op 818.67 ms/op 1.07
migrate state 1000000 validators, 1700 modified, 1000 new 1.1314 s/op 1.1822 s/op 0.96
migrate state 1000000 validators, 3400 modified, 2000 new 1.2231 s/op 1.3061 s/op 0.94
migrate state 1500000 validators, 24 modified, 0 new 789.04 ms/op 917.41 ms/op 0.86
migrate state 1500000 validators, 1700 modified, 1000 new 1.0043 s/op 1.0224 s/op 0.98
migrate state 1500000 validators, 3400 modified, 2000 new 1.2757 s/op 1.2375 s/op 1.03
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.6600 ns/op 5.8400 ns/op 0.97
state getBlockRootAtSlot - 250000 vs - 7PWei 416.94 ns/op 477.35 ns/op 0.87
computeProposers - vc 250000 5.6592 ms/op 5.6249 ms/op 1.01
computeEpochShuffling - vc 250000 36.262 ms/op 35.693 ms/op 1.02
getNextSyncCommittee - vc 250000 107.40 ms/op 113.43 ms/op 0.95
computeSigningRoot for AttestationData 21.486 us/op 21.248 us/op 1.01
hash AttestationData serialized data then Buffer.toString(base64) 1.1390 us/op 1.1840 us/op 0.96
toHexString serialized data 861.08 ns/op 881.06 ns/op 0.98
Buffer.toString(base64) 112.68 ns/op 111.67 ns/op 1.01
nodejs block root to RootHex using toHex 111.76 ns/op 102.97 ns/op 1.09
nodejs block root to RootHex using toRootHex 72.948 ns/op 65.877 ns/op 1.11
browser block root to RootHex using the deprecated toHexString 189.81 ns/op 187.24 ns/op 1.01
browser block root to RootHex using toHex 143.19 ns/op 155.35 ns/op 0.92
browser block root to RootHex using toRootHex 136.76 ns/op 148.84 ns/op 0.92

by benchmarkbot/action

@twoeths
Copy link
Contributor

twoeths commented Feb 3, 2025

@nflaig ideally we should have unit test if not spec test to reproduce/fix the issue

@nflaig
Copy link
Member Author

nflaig commented Feb 3, 2025

@nflaig ideally we should have unit test if not spec test to reproduce/fix the issue

we've added a spec test that covers this scenario and it's already part of beta.1 and we have a test in ssz that checks this, that's why I left out the test as it would not really test a lot

@wemeetagain wemeetagain merged commit 058bcf5 into unstable Feb 3, 2025
20 checks passed
@wemeetagain wemeetagain deleted the nflaig/update-ssz branch February 3, 2025 15:16
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.27.0 🎉

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.

3 participants