Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented May 22, 2025

Motivation

Follow up to #7729, we need to handle blob schedule separately from generic string comparison of values, otherwise what we compare are shallow stringified arrays. It does not validate the object properties and on length mismatch we just get the following error

✖ Error: Local and remote configs are different
BLOB_SCHEDULE different value: [object object] != [object object],[object object]

Description

Add special handling for blob schedule when asserting equal params

  • deserialize and sort blob schedules
  • compare length of local and remote blob schedule
  • then check each entry by comparing EPOCH and MAX_BLOBS_PER_BLOCK

@codecov
Copy link

codecov bot commented May 22, 2025

Codecov Report

Attention: Patch coverage is 37.03704% with 34 lines in your changes missing coverage. Please review.

Project coverage is 55.80%. Comparing base (011a0c4) to head (418675b).
Report is 9 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7859      +/-   ##
============================================
- Coverage     55.81%   55.80%   -0.02%     
============================================
  Files           823      823              
  Lines         58157    58180      +23     
  Branches       4496     4499       +3     
============================================
+ Hits          32463    32467       +4     
- Misses        25627    25646      +19     
  Partials         67       67              
🚀 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.

@nflaig nflaig marked this pull request as ready for review May 22, 2025 12:38
@nflaig nflaig requested a review from a team as a code owner May 22, 2025 12:39
@github-actions
Copy link
Contributor

github-actions bot commented May 22, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: c37fac1 Previous: 011a0c4 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0538 ms/op 1.0404 ms/op 1.01
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.535 us/op 37.163 us/op 0.98
BLS verify - blst 938.48 us/op 1.0398 ms/op 0.90
BLS verifyMultipleSignatures 3 - blst 1.4246 ms/op 1.3880 ms/op 1.03
BLS verifyMultipleSignatures 8 - blst 1.9537 ms/op 2.0041 ms/op 0.97
BLS verifyMultipleSignatures 32 - blst 5.7914 ms/op 6.2265 ms/op 0.93
BLS verifyMultipleSignatures 64 - blst 11.343 ms/op 11.317 ms/op 1.00
BLS verifyMultipleSignatures 128 - blst 18.057 ms/op 17.700 ms/op 1.02
BLS deserializing 10000 signatures 700.84 ms/op 710.58 ms/op 0.99
BLS deserializing 100000 signatures 7.3392 s/op 7.2330 s/op 1.01
BLS verifyMultipleSignatures - same message - 3 - blst 1.1170 ms/op 1.0804 ms/op 1.03
BLS verifyMultipleSignatures - same message - 8 - blst 1.1783 ms/op 1.1501 ms/op 1.02
BLS verifyMultipleSignatures - same message - 32 - blst 1.9289 ms/op 2.0651 ms/op 0.93
BLS verifyMultipleSignatures - same message - 64 - blst 3.2813 ms/op 2.7747 ms/op 1.18
BLS verifyMultipleSignatures - same message - 128 - blst 5.7918 ms/op 5.1675 ms/op 1.12
BLS aggregatePubkeys 32 - blst 22.258 us/op 20.716 us/op 1.07
BLS aggregatePubkeys 128 - blst 77.733 us/op 72.082 us/op 1.08
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 64.126 ms/op 56.176 ms/op 1.14
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 57.020 ms/op 54.345 ms/op 1.05
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 48.825 ms/op 46.851 ms/op 1.04
getSlashingsAndExits - default max 95.401 us/op 103.04 us/op 0.93
getSlashingsAndExits - 2k 361.10 us/op 333.60 us/op 1.08
proposeBlockBody type=full, size=empty 6.9673 ms/op 6.7679 ms/op 1.03
isKnown best case - 1 super set check 222.00 ns/op 208.00 ns/op 1.07
isKnown normal case - 2 super set checks 221.00 ns/op 198.00 ns/op 1.12
isKnown worse case - 16 super set checks 221.00 ns/op 200.00 ns/op 1.10
InMemoryCheckpointStateCache - add get delete 2.4880 us/op 2.3160 us/op 1.07
validate api signedAggregateAndProof - struct 1.4224 ms/op 1.4619 ms/op 0.97
validate gossip signedAggregateAndProof - struct 1.4089 ms/op 1.5264 ms/op 0.92
batch validate gossip attestation - vc 640000 - chunk 32 123.80 us/op 118.30 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 64 110.42 us/op 103.91 us/op 1.06
batch validate gossip attestation - vc 640000 - chunk 128 106.90 us/op 103.24 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 256 108.35 us/op 107.34 us/op 1.01
pickEth1Vote - no votes 1.0584 ms/op 1.0154 ms/op 1.04
pickEth1Vote - max votes 8.2321 ms/op 8.7762 ms/op 0.94
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.070 ms/op 14.302 ms/op 0.98
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.793 ms/op 21.489 ms/op 1.11
pickEth1Vote - Eth1Data fastSerialize value x2048 500.98 us/op 470.67 us/op 1.06
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.5210 ms/op 2.3827 ms/op 1.06
bytes32 toHexString 403.00 ns/op 428.00 ns/op 0.94
bytes32 Buffer.toString(hex) 294.00 ns/op 264.00 ns/op 1.11
bytes32 Buffer.toString(hex) from Uint8Array 366.00 ns/op 343.00 ns/op 1.07
bytes32 Buffer.toString(hex) + 0x 267.00 ns/op 251.00 ns/op 1.06
Object access 1 prop 0.14100 ns/op 0.12400 ns/op 1.14
Map access 1 prop 0.14300 ns/op 0.12700 ns/op 1.13
Object get x1000 6.2490 ns/op 6.0920 ns/op 1.03
Map get x1000 7.4400 ns/op 6.6870 ns/op 1.11
Object set x1000 33.396 ns/op 32.911 ns/op 1.01
Map set x1000 23.608 ns/op 26.401 ns/op 0.89
Return object 10000 times 0.30690 ns/op 0.30070 ns/op 1.02
Throw Error 10000 times 4.9281 us/op 4.4894 us/op 1.10
toHex 142.57 ns/op 155.48 ns/op 0.92
Buffer.from 135.49 ns/op 130.02 ns/op 1.04
shared Buffer 92.950 ns/op 84.791 ns/op 1.10
fastMsgIdFn sha256 / 200 bytes 2.2500 us/op 2.2400 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 235.00 ns/op 227.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 200 bytes 295.00 ns/op 280.00 ns/op 1.05
fastMsgIdFn sha256 / 1000 bytes 7.4000 us/op 7.5280 us/op 0.98
fastMsgIdFn h32 xxhash / 1000 bytes 402.00 ns/op 397.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 1000 bytes 354.00 ns/op 415.00 ns/op 0.85
fastMsgIdFn sha256 / 10000 bytes 66.683 us/op 72.498 us/op 0.92
fastMsgIdFn h32 xxhash / 10000 bytes 1.8900 us/op 1.9700 us/op 0.96
fastMsgIdFn h64 xxhash / 10000 bytes 1.4200 us/op 1.2930 us/op 1.10
send data - 1000 256B messages 14.746 ms/op 14.835 ms/op 0.99
send data - 1000 512B messages 20.085 ms/op 17.945 ms/op 1.12
send data - 1000 1024B messages 28.631 ms/op 27.808 ms/op 1.03
send data - 1000 1200B messages 26.626 ms/op 23.135 ms/op 1.15
send data - 1000 2048B messages 23.953 ms/op 26.781 ms/op 0.89
send data - 1000 4096B messages 31.604 ms/op 28.231 ms/op 1.12
send data - 1000 16384B messages 63.849 ms/op 74.654 ms/op 0.86
send data - 1000 65536B messages 231.62 ms/op 243.35 ms/op 0.95
enrSubnets - fastDeserialize 64 bits 1.7000 us/op 1.0600 us/op 1.60
enrSubnets - ssz BitVector 64 bits 342.00 ns/op 338.00 ns/op 1.01
enrSubnets - fastDeserialize 4 bits 137.00 ns/op 136.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 358.00 ns/op 398.00 ns/op 0.90
prioritizePeers score -10:0 att 32-0.1 sync 2-0 128.46 us/op 128.89 us/op 1.00
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 144.26 us/op 154.06 us/op 0.94
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 209.44 us/op 213.05 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 387.59 us/op 410.82 us/op 0.94
prioritizePeers score 0:0 att 64-1 sync 4-1 467.92 us/op 508.10 us/op 0.92
array of 16000 items push then shift 1.6176 us/op 1.6942 us/op 0.95
LinkedList of 16000 items push then shift 7.6490 ns/op 8.4600 ns/op 0.90
array of 16000 items push then pop 84.995 ns/op 87.616 ns/op 0.97
LinkedList of 16000 items push then pop 7.3780 ns/op 8.1980 ns/op 0.90
array of 24000 items push then shift 2.5577 us/op 2.4879 us/op 1.03
LinkedList of 24000 items push then shift 7.2360 ns/op 9.1810 ns/op 0.79
array of 24000 items push then pop 121.48 ns/op 120.00 ns/op 1.01
LinkedList of 24000 items push then pop 7.5700 ns/op 9.2070 ns/op 0.82
intersect bitArray bitLen 8 6.4330 ns/op 6.7670 ns/op 0.95
intersect array and set length 8 38.154 ns/op 40.540 ns/op 0.94
intersect bitArray bitLen 128 29.909 ns/op 31.032 ns/op 0.96
intersect array and set length 128 626.46 ns/op 651.99 ns/op 0.96
bitArray.getTrueBitIndexes() bitLen 128 1.0510 us/op 1.1820 us/op 0.89
bitArray.getTrueBitIndexes() bitLen 248 1.8150 us/op 2.3370 us/op 0.78
bitArray.getTrueBitIndexes() bitLen 512 3.7220 us/op 3.9660 us/op 0.94
Buffer.concat 32 items 667.00 ns/op 639.00 ns/op 1.04
Uint8Array.set 32 items 991.00 ns/op 2.1840 us/op 0.45
Buffer.copy 2.1900 us/op 3.5150 us/op 0.62
Uint8Array.set - with subarray 1.6050 us/op 3.1980 us/op 0.50
Uint8Array.set - without subarray 1.0220 us/op 1.8890 us/op 0.54
getUint32 - dataview 207.00 ns/op 215.00 ns/op 0.96
getUint32 - manual 136.00 ns/op 140.00 ns/op 0.97
Set add up to 64 items then delete first 2.2760 us/op 3.0151 us/op 0.75
OrderedSet add up to 64 items then delete first 3.4464 us/op 4.3370 us/op 0.79
Set add up to 64 items then delete last 2.9064 us/op 3.2574 us/op 0.89
OrderedSet add up to 64 items then delete last 3.7321 us/op 5.2753 us/op 0.71
Set add up to 64 items then delete middle 2.5372 us/op 3.1165 us/op 0.81
OrderedSet add up to 64 items then delete middle 5.8943 us/op 6.7109 us/op 0.88
Set add up to 128 items then delete first 5.5821 us/op 6.5470 us/op 0.85
OrderedSet add up to 128 items then delete first 9.0403 us/op 11.342 us/op 0.80
Set add up to 128 items then delete last 5.9750 us/op 6.3558 us/op 0.94
OrderedSet add up to 128 items then delete last 8.1930 us/op 10.291 us/op 0.80
Set add up to 128 items then delete middle 5.2347 us/op 6.3495 us/op 0.82
OrderedSet add up to 128 items then delete middle 14.974 us/op 16.878 us/op 0.89
Set add up to 256 items then delete first 11.116 us/op 13.373 us/op 0.83
OrderedSet add up to 256 items then delete first 17.247 us/op 20.756 us/op 0.83
Set add up to 256 items then delete last 9.9642 us/op 12.325 us/op 0.81
OrderedSet add up to 256 items then delete last 18.740 us/op 18.571 us/op 1.01
Set add up to 256 items then delete middle 11.392 us/op 12.827 us/op 0.89
OrderedSet add up to 256 items then delete middle 44.238 us/op 48.533 us/op 0.91
transfer serialized Status (84 B) 2.3000 us/op 2.4520 us/op 0.94
copy serialized Status (84 B) 1.2520 us/op 1.6930 us/op 0.74
transfer serialized SignedVoluntaryExit (112 B) 2.5340 us/op 2.7310 us/op 0.93
copy serialized SignedVoluntaryExit (112 B) 1.2720 us/op 1.4410 us/op 0.88
transfer serialized ProposerSlashing (416 B) 2.5010 us/op 3.1000 us/op 0.81
copy serialized ProposerSlashing (416 B) 1.3840 us/op 1.9480 us/op 0.71
transfer serialized Attestation (485 B) 2.5700 us/op 3.2960 us/op 0.78
copy serialized Attestation (485 B) 1.4290 us/op 1.8820 us/op 0.76
transfer serialized AttesterSlashing (33232 B) 2.4860 us/op 2.8400 us/op 0.88
copy serialized AttesterSlashing (33232 B) 4.2790 us/op 6.4680 us/op 0.66
transfer serialized Small SignedBeaconBlock (128000 B) 3.2440 us/op 3.4880 us/op 0.93
copy serialized Small SignedBeaconBlock (128000 B) 11.768 us/op 14.027 us/op 0.84
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6350 us/op 3.8670 us/op 0.94
copy serialized Avg SignedBeaconBlock (200000 B) 15.846 us/op 20.704 us/op 0.77
transfer serialized BlobsSidecar (524380 B) 3.8430 us/op 4.3550 us/op 0.88
copy serialized BlobsSidecar (524380 B) 62.793 us/op 120.68 us/op 0.52
transfer serialized Big SignedBeaconBlock (1000000 B) 4.1360 us/op 4.5160 us/op 0.92
copy serialized Big SignedBeaconBlock (1000000 B) 121.60 us/op 345.03 us/op 0.35
pass gossip attestations to forkchoice per slot 2.8333 ms/op 2.8429 ms/op 1.00
forkChoice updateHead vc 100000 bc 64 eq 0 470.47 us/op 519.75 us/op 0.91
forkChoice updateHead vc 600000 bc 64 eq 0 2.9716 ms/op 3.2034 ms/op 0.93
forkChoice updateHead vc 1000000 bc 64 eq 0 5.4333 ms/op 5.3895 ms/op 1.01
forkChoice updateHead vc 600000 bc 320 eq 0 2.9847 ms/op 2.9734 ms/op 1.00
forkChoice updateHead vc 600000 bc 1200 eq 0 3.2082 ms/op 3.0495 ms/op 1.05
forkChoice updateHead vc 600000 bc 7200 eq 0 3.5225 ms/op 3.3701 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 1000 10.862 ms/op 10.761 ms/op 1.01
forkChoice updateHead vc 600000 bc 64 eq 10000 10.825 ms/op 10.917 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 300000 16.658 ms/op 15.261 ms/op 1.09
computeDeltas 500000 validators 300 proto nodes 4.2581 ms/op 4.4175 ms/op 0.96
computeDeltas 500000 validators 1200 proto nodes 4.2485 ms/op 4.5287 ms/op 0.94
computeDeltas 500000 validators 7200 proto nodes 4.3211 ms/op 4.7489 ms/op 0.91
computeDeltas 750000 validators 300 proto nodes 7.6890 ms/op 6.4421 ms/op 1.19
computeDeltas 750000 validators 1200 proto nodes 7.2325 ms/op 6.2402 ms/op 1.16
computeDeltas 750000 validators 7200 proto nodes 7.5611 ms/op 6.3149 ms/op 1.20
computeDeltas 1400000 validators 300 proto nodes 14.528 ms/op 11.379 ms/op 1.28
computeDeltas 1400000 validators 1200 proto nodes 15.179 ms/op 11.224 ms/op 1.35
computeDeltas 1400000 validators 7200 proto nodes 12.143 ms/op 11.177 ms/op 1.09
computeDeltas 2100000 validators 300 proto nodes 17.064 ms/op 16.721 ms/op 1.02
computeDeltas 2100000 validators 1200 proto nodes 18.994 ms/op 16.814 ms/op 1.13
computeDeltas 2100000 validators 7200 proto nodes 19.890 ms/op 18.113 ms/op 1.10
altair processAttestation - 250000 vs - 7PWei normalcase 3.1003 ms/op 3.0405 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei worstcase 4.0209 ms/op 3.4348 ms/op 1.17
altair processAttestation - setStatus - 1/6 committees join 174.32 us/op 132.76 us/op 1.31
altair processAttestation - setStatus - 1/3 committees join 293.99 us/op 280.09 us/op 1.05
altair processAttestation - setStatus - 1/2 committees join 367.88 us/op 393.66 us/op 0.93
altair processAttestation - setStatus - 2/3 committees join 519.84 us/op 498.29 us/op 1.04
altair processAttestation - setStatus - 4/5 committees join 672.46 us/op 723.83 us/op 0.93
altair processAttestation - setStatus - 100% committees join 805.71 us/op 769.02 us/op 1.05
altair processBlock - 250000 vs - 7PWei normalcase 4.7922 ms/op 6.0758 ms/op 0.79
altair processBlock - 250000 vs - 7PWei normalcase hashState 38.953 ms/op 39.779 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase 40.723 ms/op 44.351 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase hashState 84.103 ms/op 90.886 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei normalcase 2.0150 ms/op 2.1050 ms/op 0.96
phase0 processBlock - 250000 vs - 7PWei worstcase 29.017 ms/op 26.891 ms/op 1.08
altair processEth1Data - 250000 vs - 7PWei normalcase 374.86 us/op 339.19 us/op 1.11
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.1360 us/op 7.1780 us/op 1.27
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 56.716 us/op 54.699 us/op 1.04
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 14.773 us/op 18.367 us/op 0.80
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.1370 us/op 7.8970 us/op 0.90
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 201.04 us/op 233.04 us/op 0.86
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9526 ms/op 2.3760 ms/op 0.82
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4770 ms/op 2.4677 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4800 ms/op 2.4567 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.8831 ms/op 5.6045 ms/op 0.87
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4587 ms/op 2.5696 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.9849 ms/op 5.6395 ms/op 0.88
Tree 40 250000 create 505.56 ms/op 659.52 ms/op 0.77
Tree 40 250000 get(125000) 149.78 ns/op 148.38 ns/op 1.01
Tree 40 250000 set(125000) 1.4906 us/op 2.3418 us/op 0.64
Tree 40 250000 toArray() 21.438 ms/op 23.854 ms/op 0.90
Tree 40 250000 iterate all - toArray() + loop 20.180 ms/op 22.346 ms/op 0.90
Tree 40 250000 iterate all - get(i) 58.273 ms/op 61.954 ms/op 0.94
Array 250000 create 3.0996 ms/op 2.6760 ms/op 1.16
Array 250000 clone - spread 821.80 us/op 1.7022 ms/op 0.48
Array 250000 get(125000) 0.46900 ns/op 0.45400 ns/op 1.03
Array 250000 set(125000) 0.49100 ns/op 0.44400 ns/op 1.11
Array 250000 iterate all - loop 82.445 us/op 85.551 us/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 42.992 ms/op 44.190 ms/op 0.97
Array.fill - length 1000000 3.6624 ms/op 4.3511 ms/op 0.84
Array push - length 1000000 14.681 ms/op 16.290 ms/op 0.90
Array.get 0.28814 ns/op 0.29180 ns/op 0.99
Uint8Array.get 0.45365 ns/op 0.46251 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 25.685 ms/op 18.031 ms/op 1.42
altair processEpoch - mainnet_e81889 304.01 ms/op 286.12 ms/op 1.06
mainnet_e81889 - altair beforeProcessEpoch 18.707 ms/op 18.644 ms/op 1.00
mainnet_e81889 - altair processJustificationAndFinalization 6.2440 us/op 5.8370 us/op 1.07
mainnet_e81889 - altair processInactivityUpdates 4.2530 ms/op 6.3334 ms/op 0.67
mainnet_e81889 - altair processRewardsAndPenalties 44.337 ms/op 41.235 ms/op 1.08
mainnet_e81889 - altair processRegistryUpdates 774.00 ns/op 933.00 ns/op 0.83
mainnet_e81889 - altair processSlashings 236.00 ns/op 192.00 ns/op 1.23
mainnet_e81889 - altair processEth1DataReset 209.00 ns/op 207.00 ns/op 1.01
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.3583 ms/op 1.3157 ms/op 1.03
mainnet_e81889 - altair processSlashingsReset 968.00 ns/op 1.2690 us/op 0.76
mainnet_e81889 - altair processRandaoMixesReset 1.3410 us/op 1.3490 us/op 0.99
mainnet_e81889 - altair processHistoricalRootsUpdate 193.00 ns/op 186.00 ns/op 1.04
mainnet_e81889 - altair processParticipationFlagUpdates 563.00 ns/op 577.00 ns/op 0.98
mainnet_e81889 - altair processSyncCommitteeUpdates 151.00 ns/op 149.00 ns/op 1.01
mainnet_e81889 - altair afterProcessEpoch 45.093 ms/op 46.563 ms/op 0.97
capella processEpoch - mainnet_e217614 1.0504 s/op 1.0975 s/op 0.96
mainnet_e217614 - capella beforeProcessEpoch 66.532 ms/op 78.541 ms/op 0.85
mainnet_e217614 - capella processJustificationAndFinalization 6.1840 us/op 6.1770 us/op 1.00
mainnet_e217614 - capella processInactivityUpdates 15.279 ms/op 16.130 ms/op 0.95
mainnet_e217614 - capella processRewardsAndPenalties 191.64 ms/op 187.15 ms/op 1.02
mainnet_e217614 - capella processRegistryUpdates 7.4670 us/op 8.2710 us/op 0.90
mainnet_e217614 - capella processSlashings 205.00 ns/op 211.00 ns/op 0.97
mainnet_e217614 - capella processEth1DataReset 196.00 ns/op 193.00 ns/op 1.02
mainnet_e217614 - capella processEffectiveBalanceUpdates 12.606 ms/op 4.2728 ms/op 2.95
mainnet_e217614 - capella processSlashingsReset 1.0350 us/op 1.0360 us/op 1.00
mainnet_e217614 - capella processRandaoMixesReset 1.3400 us/op 1.2490 us/op 1.07
mainnet_e217614 - capella processHistoricalRootsUpdate 204.00 ns/op 203.00 ns/op 1.00
mainnet_e217614 - capella processParticipationFlagUpdates 536.00 ns/op 567.00 ns/op 0.95
mainnet_e217614 - capella afterProcessEpoch 117.12 ms/op 122.10 ms/op 0.96
phase0 processEpoch - mainnet_e58758 319.63 ms/op 350.54 ms/op 0.91
mainnet_e58758 - phase0 beforeProcessEpoch 84.731 ms/op 92.149 ms/op 0.92
mainnet_e58758 - phase0 processJustificationAndFinalization 6.4890 us/op 6.8450 us/op 0.95
mainnet_e58758 - phase0 processRewardsAndPenalties 39.983 ms/op 42.568 ms/op 0.94
mainnet_e58758 - phase0 processRegistryUpdates 3.4150 us/op 3.2520 us/op 1.05
mainnet_e58758 - phase0 processSlashings 205.00 ns/op 199.00 ns/op 1.03
mainnet_e58758 - phase0 processEth1DataReset 188.00 ns/op 202.00 ns/op 0.93
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2452 ms/op 3.3313 ms/op 0.37
mainnet_e58758 - phase0 processSlashingsReset 1.0760 us/op 1.1100 us/op 0.97
mainnet_e58758 - phase0 processRandaoMixesReset 1.3440 us/op 1.4020 us/op 0.96
mainnet_e58758 - phase0 processHistoricalRootsUpdate 211.00 ns/op 197.00 ns/op 1.07
mainnet_e58758 - phase0 processParticipationRecordUpdates 909.00 ns/op 1.0030 us/op 0.91
mainnet_e58758 - phase0 afterProcessEpoch 36.669 ms/op 38.568 ms/op 0.95
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4243 ms/op 1.6269 ms/op 0.88
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9200 ms/op 3.2108 ms/op 0.60
altair processInactivityUpdates - 250000 normalcase 19.844 ms/op 21.363 ms/op 0.93
altair processInactivityUpdates - 250000 worstcase 20.227 ms/op 19.358 ms/op 1.04
phase0 processRegistryUpdates - 250000 normalcase 7.5650 us/op 8.9530 us/op 0.84
phase0 processRegistryUpdates - 250000 badcase_full_deposits 455.31 us/op 319.60 us/op 1.42
phase0 processRegistryUpdates - 250000 worstcase 0.5 125.73 ms/op 141.79 ms/op 0.89
altair processRewardsAndPenalties - 250000 normalcase 32.829 ms/op 25.835 ms/op 1.27
altair processRewardsAndPenalties - 250000 worstcase 28.123 ms/op 28.966 ms/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 8.8593 ms/op 7.9674 ms/op 1.11
phase0 getAttestationDeltas - 250000 worstcase 5.9720 ms/op 6.3060 ms/op 0.95
phase0 processSlashings - 250000 worstcase 92.734 us/op 102.43 us/op 0.91
altair processSyncCommitteeUpdates - 250000 11.293 ms/op 11.936 ms/op 0.95
BeaconState.hashTreeRoot - No change 249.00 ns/op 236.00 ns/op 1.06
BeaconState.hashTreeRoot - 1 full validator 74.336 us/op 91.592 us/op 0.81
BeaconState.hashTreeRoot - 32 full validator 1.0775 ms/op 835.20 us/op 1.29
BeaconState.hashTreeRoot - 512 full validator 9.7705 ms/op 10.798 ms/op 0.90
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 89.994 us/op 114.44 us/op 0.79
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.6472 ms/op 1.7096 ms/op 0.96
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 25.768 ms/op 21.776 ms/op 1.18
BeaconState.hashTreeRoot - 1 balances 89.111 us/op 77.647 us/op 1.15
BeaconState.hashTreeRoot - 32 balances 1.2161 ms/op 871.84 us/op 1.39
BeaconState.hashTreeRoot - 512 balances 8.9958 ms/op 8.8621 ms/op 1.02
BeaconState.hashTreeRoot - 250000 balances 167.15 ms/op 182.89 ms/op 0.91
aggregationBits - 2048 els - zipIndexesInBitList 22.641 us/op 26.048 us/op 0.87
byteArrayEquals 32 53.991 ns/op 55.456 ns/op 0.97
Buffer.compare 32 17.172 ns/op 17.653 ns/op 0.97
byteArrayEquals 1024 1.5865 us/op 1.6511 us/op 0.96
Buffer.compare 1024 30.507 ns/op 26.384 ns/op 1.16
byteArrayEquals 16384 25.429 us/op 26.141 us/op 0.97
Buffer.compare 16384 202.21 ns/op 200.58 ns/op 1.01
byteArrayEquals 123687377 192.58 ms/op 201.62 ms/op 0.96
Buffer.compare 123687377 7.5678 ms/op 8.1152 ms/op 0.93
byteArrayEquals 32 - diff last byte 52.713 ns/op 54.246 ns/op 0.97
Buffer.compare 32 - diff last byte 17.543 ns/op 17.898 ns/op 0.98
byteArrayEquals 1024 - diff last byte 1.5987 us/op 1.6709 us/op 0.96
Buffer.compare 1024 - diff last byte 26.503 ns/op 27.088 ns/op 0.98
byteArrayEquals 16384 - diff last byte 25.719 us/op 30.491 us/op 0.84
Buffer.compare 16384 - diff last byte 193.92 ns/op 211.23 ns/op 0.92
byteArrayEquals 123687377 - diff last byte 191.73 ms/op 207.10 ms/op 0.93
Buffer.compare 123687377 - diff last byte 7.6475 ms/op 7.2971 ms/op 1.05
byteArrayEquals 32 - random bytes 5.1590 ns/op 5.2760 ns/op 0.98
Buffer.compare 32 - random bytes 17.329 ns/op 17.586 ns/op 0.99
byteArrayEquals 1024 - random bytes 5.1670 ns/op 5.2130 ns/op 0.99
Buffer.compare 1024 - random bytes 17.250 ns/op 17.433 ns/op 0.99
byteArrayEquals 16384 - random bytes 5.1550 ns/op 5.2270 ns/op 0.99
Buffer.compare 16384 - random bytes 17.261 ns/op 17.474 ns/op 0.99
byteArrayEquals 123687377 - random bytes 6.5100 ns/op 7.1500 ns/op 0.91
Buffer.compare 123687377 - random bytes 20.460 ns/op 20.460 ns/op 1.00
regular array get 100000 times 37.540 us/op 41.365 us/op 0.91
wrappedArray get 100000 times 32.963 us/op 33.411 us/op 0.99
arrayWithProxy get 100000 times 12.452 ms/op 12.259 ms/op 1.02
ssz.Root.equals 46.124 ns/op 47.232 ns/op 0.98
byteArrayEquals 45.062 ns/op 46.323 ns/op 0.97
Buffer.compare 10.293 ns/op 10.538 ns/op 0.98
processSlot - 1 slots 10.067 us/op 10.907 us/op 0.92
processSlot - 32 slots 1.9463 ms/op 2.7761 ms/op 0.70
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.9916 ms/op 3.1306 ms/op 0.96
getCommitteeAssignments - req 1 vs - 250000 vc 2.1191 ms/op 2.1471 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 4.1530 ms/op 4.3673 ms/op 0.95
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4311 ms/op 4.5305 ms/op 0.98
findModifiedValidators - 10000 modified validators 725.50 ms/op 780.92 ms/op 0.93
findModifiedValidators - 1000 modified validators 766.74 ms/op 765.50 ms/op 1.00
findModifiedValidators - 100 modified validators 288.68 ms/op 229.79 ms/op 1.26
findModifiedValidators - 10 modified validators 221.47 ms/op 184.11 ms/op 1.20
findModifiedValidators - 1 modified validators 170.48 ms/op 148.35 ms/op 1.15
findModifiedValidators - no difference 150.11 ms/op 157.46 ms/op 0.95
compare ViewDUs 6.3592 s/op 6.3723 s/op 1.00
compare each validator Uint8Array 1.6452 s/op 1.5756 s/op 1.04
compare ViewDU to Uint8Array 1.5457 s/op 1.1170 s/op 1.38
migrate state 1000000 validators, 24 modified, 0 new 899.50 ms/op 930.58 ms/op 0.97
migrate state 1000000 validators, 1700 modified, 1000 new 1.2704 s/op 1.1710 s/op 1.08
migrate state 1000000 validators, 3400 modified, 2000 new 1.5305 s/op 1.4651 s/op 1.04
migrate state 1500000 validators, 24 modified, 0 new 1.0163 s/op 917.58 ms/op 1.11
migrate state 1500000 validators, 1700 modified, 1000 new 1.1436 s/op 1.1421 s/op 1.00
migrate state 1500000 validators, 3400 modified, 2000 new 1.4804 s/op 1.3266 s/op 1.12
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.8400 ns/op 4.3100 ns/op 1.12
state getBlockRootAtSlot - 250000 vs - 7PWei 517.84 ns/op 432.01 ns/op 1.20
naive computeProposerIndex 100000 validators 53.355 ms/op 57.670 ms/op 0.93
computeProposerIndex 100000 validators 1.7118 ms/op 1.5402 ms/op 1.11
naiveGetNextSyncCommitteeIndices 1000 validators 18.297 s/op 8.6169 s/op 2.12
getNextSyncCommitteeIndices 1000 validators 157.29 ms/op 117.89 ms/op 1.33
naiveGetNextSyncCommitteeIndices 10000 validators 10.444 s/op 6.8077 s/op 1.53
getNextSyncCommitteeIndices 10000 validators 115.25 ms/op 110.28 ms/op 1.05
naiveGetNextSyncCommitteeIndices 100000 validators 10.854 s/op 7.5671 s/op 1.43
getNextSyncCommitteeIndices 100000 validators 215.43 ms/op 109.99 ms/op 1.96
naive computeShuffledIndex 100000 validators 41.698 s/op 23.300 s/op 1.79
cached computeShuffledIndex 100000 validators 1.2166 s/op 560.61 ms/op 2.17
naive computeShuffledIndex 2000000 validators 754.91 s/op 501.01 s/op 1.51
cached computeShuffledIndex 2000000 validators 52.613 s/op 31.475 s/op 1.67
computeProposers - vc 250000 624.37 us/op 606.67 us/op 1.03
computeEpochShuffling - vc 250000 44.056 ms/op 41.732 ms/op 1.06
getNextSyncCommittee - vc 250000 10.502 ms/op 10.454 ms/op 1.00
computeSigningRoot for AttestationData 23.925 us/op 18.799 us/op 1.27
hash AttestationData serialized data then Buffer.toString(base64) 1.6069 us/op 1.5790 us/op 1.02
toHexString serialized data 1.4339 us/op 1.0811 us/op 1.33
Buffer.toString(base64) 187.54 ns/op 140.59 ns/op 1.33
nodejs block root to RootHex using toHex 150.58 ns/op 154.46 ns/op 0.97
nodejs block root to RootHex using toRootHex 90.359 ns/op 93.010 ns/op 0.97
browser block root to RootHex using the deprecated toHexString 228.78 ns/op 207.07 ns/op 1.10
browser block root to RootHex using toHex 174.02 ns/op 168.01 ns/op 1.04
browser block root to RootHex using toRootHex 162.80 ns/op 156.88 ns/op 1.04

by benchmarkbot/action

@nflaig nflaig merged commit 33ca095 into unstable May 27, 2025
20 checks passed
@nflaig nflaig deleted the nflaig/assert-blob-schedule branch May 27, 2025 13:16
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.31.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