Skip to content

fix: optimize proposer boost dependent root check - #9853

Draft
nflaig wants to merge 1 commit into
unstablefrom
nflaig/proposer-boost-dependent-root
Draft

fix: optimize proposer boost dependent root check#9853
nflaig wants to merge 1 commit into
unstablefrom
nflaig/proposer-boost-dependent-root

Conversation

@nflaig

@nflaig nflaig commented Aug 19, 2026

Copy link
Copy Markdown
Member

An epoch-boundary checkpoint update can stale the cached head before the first block is imported. Recomputing head unconditionally fixes that, but adds a second fork-choice run to the normal import path. The justified checkpoint provides the same dependent root whenever it is at or after the dependent slot, with a fresh-head fallback for exceptional cases.

  • Use the justified checkpoint as the proposer boost dependent-root anchor when it proves the canonical root.
  • Recompute fork choice only when the justified block is older than the dependent slot.
  • Re-enable the affected compliance case.

@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: f8066d8 Previous: 1759dcc Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.1811 ms/op 1.7427 ms/op 1.25
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 43.298 us/op 41.253 us/op 1.05
BLS verify - blst 676.09 us/op 656.11 us/op 1.03
BLS verifyMultipleSignatures 3 - blst 1.0666 ms/op 1.0364 ms/op 1.03
BLS verifyMultipleSignatures 8 - blst 1.5963 ms/op 1.5286 ms/op 1.04
BLS verifyMultipleSignatures 32 - blst 6.6732 ms/op 4.3799 ms/op 1.52
BLS verifyMultipleSignatures 64 - blst 14.371 ms/op 8.4970 ms/op 1.69
BLS verifyMultipleSignatures 128 - blst 28.624 ms/op 16.760 ms/op 1.71
BLS deserializing 10000 signatures 781.16 ms/op 628.82 ms/op 1.24
BLS deserializing 100000 signatures 7.2602 s/op 6.3356 s/op 1.15
BLS verifyMultipleSignatures - same message - 3 - blst 710.69 us/op 701.25 us/op 1.01
BLS verifyMultipleSignatures - same message - 8 - blst 843.40 us/op 839.52 us/op 1.00
BLS verifyMultipleSignatures - same message - 32 - blst 1.4823 ms/op 2.2671 ms/op 0.65
BLS verifyMultipleSignatures - same message - 64 - blst 2.3322 ms/op 2.3778 ms/op 0.98
BLS verifyMultipleSignatures - same message - 128 - blst 4.0951 ms/op 4.0305 ms/op 1.02
BLS aggregatePubkeys 32 - blst 18.032 us/op 17.489 us/op 1.03
BLS aggregatePubkeys 128 - blst 64.277 us/op 61.420 us/op 1.05
getSlashingsAndExits - default max 68.739 us/op 61.670 us/op 1.11
getSlashingsAndExits - 2k 473.08 us/op 447.24 us/op 1.06
proposeBlockBody type=full, size=empty 1.0009 ms/op 2.7727 ms/op 0.36
isKnown best case - 1 super set check 163.00 ns/op 170.00 ns/op 0.96
isKnown normal case - 2 super set checks 164.00 ns/op 165.00 ns/op 0.99
isKnown worse case - 16 super set checks 164.00 ns/op 157.00 ns/op 1.04
validate api signedAggregateAndProof - struct 1.2481 ms/op 1.2497 ms/op 1.00
validate gossip signedAggregateAndProof - struct 1.2421 ms/op 1.2434 ms/op 1.00
batch validate gossip attestation - vc 640000 - chunk 32 137.90 us/op 154.55 us/op 0.89
batch validate gossip attestation - vc 640000 - chunk 64 130.36 us/op 99.492 us/op 1.31
batch validate gossip attestation - vc 640000 - chunk 128 126.73 us/op 91.315 us/op 1.39
batch validate gossip attestation - vc 640000 - chunk 256 92.468 us/op 86.287 us/op 1.07
bytes32 toHexString 295.00 ns/op 310.00 ns/op 0.95
bytes32 Buffer.toString(hex) 176.00 ns/op 173.00 ns/op 1.02
bytes32 Buffer.toString(hex) from Uint8Array 242.00 ns/op 236.00 ns/op 1.03
bytes32 Buffer.toString(hex) + 0x 179.00 ns/op 174.00 ns/op 1.03
Return object 10000 times 0.21750 ns/op 0.21510 ns/op 1.01
Throw Error 10000 times 3.3968 us/op 4.6097 us/op 0.74
toHex 98.716 ns/op 106.54 ns/op 0.93
Buffer.from 91.680 ns/op 92.071 ns/op 1.00
shared Buffer 61.268 ns/op 62.224 ns/op 0.98
fastMsgIdFn sha256 / 200 bytes 1.5200 us/op 1.5030 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 164.00 ns/op 155.00 ns/op 1.06
fastMsgIdFn h64 xxhash / 200 bytes 210.00 ns/op 210.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 4.9600 us/op 4.7950 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 249.00 ns/op 253.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 1000 bytes 256.00 ns/op 258.00 ns/op 0.99
fastMsgIdFn sha256 / 10000 bytes 44.086 us/op 42.331 us/op 1.04
fastMsgIdFn h32 xxhash / 10000 bytes 1.2980 us/op 1.2770 us/op 1.02
fastMsgIdFn h64 xxhash / 10000 bytes 839.00 ns/op 830.00 ns/op 1.01
send data - 1000 256B messages 4.8634 ms/op 4.2452 ms/op 1.15
send data - 1000 512B messages 5.6475 ms/op 5.9273 ms/op 0.95
send data - 1000 1024B messages 5.5213 ms/op 6.1767 ms/op 0.89
send data - 1000 1200B messages 6.2392 ms/op 6.3314 ms/op 0.99
send data - 1000 2048B messages 13.779 ms/op 22.719 ms/op 0.61
send data - 1000 4096B messages 27.165 ms/op 42.007 ms/op 0.65
send data - 1000 16384B messages 163.19 ms/op 250.02 ms/op 0.65
send data - 1000 65536B messages 549.87 ms/op 1.3264 s/op 0.41
enrSubnets - fastDeserialize 64 bits 1.7160 us/op 770.00 ns/op 2.23
enrSubnets - ssz BitVector 64 bits 275.00 ns/op 263.00 ns/op 1.05
enrSubnets - fastDeserialize 4 bits 104.00 ns/op 101.00 ns/op 1.03
enrSubnets - ssz BitVector 4 bits 266.00 ns/op 259.00 ns/op 1.03
prioritizePeers score -10:0 att 32-0.1 sync 2-0 200.02 us/op 205.47 us/op 0.97
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 226.53 us/op 227.08 us/op 1.00
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 329.44 us/op 337.36 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 582.85 us/op 584.51 us/op 1.00
prioritizePeers score 0:0 att 64-1 sync 4-1 682.60 us/op 698.08 us/op 0.98
array of 16000 items push then shift 1.3417 us/op 1.3610 us/op 0.99
LinkedList of 16000 items push then shift 7.0950 ns/op 7.0210 ns/op 1.01
array of 16000 items push then pop 103.90 ns/op 107.73 ns/op 0.96
LinkedList of 16000 items push then pop 5.9700 ns/op 6.0490 ns/op 0.99
array of 24000 items push then shift 1.9628 us/op 2.0119 us/op 0.98
LinkedList of 24000 items push then shift 6.8700 ns/op 6.7850 ns/op 1.01
array of 24000 items push then pop 142.25 ns/op 148.84 ns/op 0.96
LinkedList of 24000 items push then pop 5.9860 ns/op 6.0510 ns/op 0.99
intersect bitArray bitLen 8 3.9020 ns/op 3.9420 ns/op 0.99
intersect array and set length 8 29.349 ns/op 30.329 ns/op 0.97
intersect bitArray bitLen 128 23.412 ns/op 23.653 ns/op 0.99
intersect array and set length 128 494.69 ns/op 512.03 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 929.00 ns/op 968.00 ns/op 0.96
bitArray.getTrueBitIndexes() bitLen 248 1.6750 us/op 1.7360 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 512 3.4700 us/op 3.6660 us/op 0.95
Full columns - reconstruct all 6 blobs 159.51 us/op 159.31 us/op 1.00
Full columns - reconstruct half of the blobs out of 6 85.408 us/op 54.161 us/op 1.58
Full columns - reconstruct single blob out of 6 39.527 us/op 66.539 us/op 0.59
Half columns - reconstruct all 6 blobs 234.00 ms/op 256.71 ms/op 0.91
Half columns - reconstruct half of the blobs out of 6 116.90 ms/op 131.02 ms/op 0.89
Half columns - reconstruct single blob out of 6 44.024 ms/op 48.968 ms/op 0.90
Set add up to 64 items then delete first 1.6456 us/op 1.5924 us/op 1.03
OrderedSet add up to 64 items then delete first 2.5067 us/op 2.4892 us/op 1.01
Set add up to 64 items then delete last 1.8490 us/op 1.8008 us/op 1.03
OrderedSet add up to 64 items then delete last 2.8826 us/op 2.8680 us/op 1.01
Set add up to 64 items then delete middle 1.8788 us/op 1.8433 us/op 1.02
OrderedSet add up to 64 items then delete middle 4.4902 us/op 4.3732 us/op 1.03
Set add up to 128 items then delete first 3.6371 us/op 3.6543 us/op 1.00
OrderedSet add up to 128 items then delete first 5.4452 us/op 8.2042 us/op 0.66
Set add up to 128 items then delete last 3.6070 us/op 6.7697 us/op 0.53
OrderedSet add up to 128 items then delete last 5.6067 us/op 6.0009 us/op 0.93
Set add up to 128 items then delete middle 3.6075 us/op 3.9745 us/op 0.91
OrderedSet add up to 128 items then delete middle 11.732 us/op 12.082 us/op 0.97
Set add up to 256 items then delete first 7.1530 us/op 7.1172 us/op 1.01
OrderedSet add up to 256 items then delete first 11.064 us/op 11.385 us/op 0.97
Set add up to 256 items then delete last 7.1599 us/op 7.4916 us/op 0.96
OrderedSet add up to 256 items then delete last 11.356 us/op 11.710 us/op 0.97
Set add up to 256 items then delete middle 7.0638 us/op 7.5119 us/op 0.94
OrderedSet add up to 256 items then delete middle 34.820 us/op 38.028 us/op 0.92
runFastConfirmationRules vc:100000 bc:96 eq:0 4.4927 ms/op 5.1324 ms/op 0.88
runFastConfirmationRules vc:600000 bc:96 eq:0 34.050 ms/op 35.323 ms/op 0.96
runFastConfirmationRules vc:1000000 bc:96 eq:0 56.716 ms/op 59.933 ms/op 0.95
runFastConfirmationRules vc:600000 bc:320 eq:0 34.054 ms/op 39.764 ms/op 0.86
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.5255 s/op 1.5862 s/op 0.96
pass gossip attestations to forkchoice per slot 2.5782 ms/op 5.3461 ms/op 0.48
forkChoice updateHead vc 100000 bc 64 eq 0 416.51 us/op 576.70 us/op 0.72
forkChoice updateHead vc 600000 bc 64 eq 0 2.4335 ms/op 2.5863 ms/op 0.94
forkChoice updateHead vc 1000000 bc 64 eq 0 4.0869 ms/op 7.8496 ms/op 0.52
forkChoice updateHead vc 600000 bc 320 eq 0 2.4505 ms/op 2.8333 ms/op 0.86
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4788 ms/op 2.5710 ms/op 0.96
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0086 ms/op 3.8909 ms/op 0.77
forkChoice updateHead vc 600000 bc 64 eq 1000 2.5130 ms/op 4.1445 ms/op 0.61
forkChoice updateHead vc 600000 bc 64 eq 10000 2.5872 ms/op 3.0953 ms/op 0.84
forkChoice updateHead vc 600000 bc 64 eq 300000 7.6566 ms/op 10.758 ms/op 0.71
computeDeltas 1400000 validators 0% inactive 12.340 ms/op 18.821 ms/op 0.66
computeDeltas 1400000 validators 10% inactive 11.599 ms/op 17.562 ms/op 0.66
computeDeltas 1400000 validators 20% inactive 11.195 ms/op 15.470 ms/op 0.72
computeDeltas 1400000 validators 50% inactive 10.905 ms/op 17.773 ms/op 0.61
computeDeltas 2100000 validators 0% inactive 22.911 ms/op 26.541 ms/op 0.86
computeDeltas 2100000 validators 10% inactive 17.406 ms/op 36.598 ms/op 0.48
computeDeltas 2100000 validators 20% inactive 32.428 ms/op 20.048 ms/op 1.62
computeDeltas 2100000 validators 50% inactive 21.226 ms/op 17.622 ms/op 1.20
altair processAttestation - 250000 vs - 7PWei normalcase 1.7054 ms/op 2.7259 ms/op 0.63
altair processAttestation - 250000 vs - 7PWei worstcase 2.6328 ms/op 3.4394 ms/op 0.77
altair processAttestation - setStatus - 1/6 committees join 100.04 us/op 119.02 us/op 0.84
altair processAttestation - setStatus - 1/3 committees join 211.41 us/op 208.88 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 298.80 us/op 293.81 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 385.95 us/op 383.21 us/op 1.01
altair processAttestation - setStatus - 4/5 committees join 552.92 us/op 565.04 us/op 0.98
altair processAttestation - setStatus - 100% committees join 642.03 us/op 639.69 us/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase 3.0586 ms/op 4.1931 ms/op 0.73
altair processBlock - 250000 vs - 7PWei normalcase hashState 14.493 ms/op 13.608 ms/op 1.07
altair processBlock - 250000 vs - 7PWei worstcase 20.355 ms/op 21.426 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase hashState 39.658 ms/op 74.936 ms/op 0.53
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4048 ms/op 1.5710 ms/op 0.89
phase0 processBlock - 250000 vs - 7PWei worstcase 16.740 ms/op 18.081 ms/op 0.93
altair processEth1Data - 250000 vs - 7PWei normalcase 287.93 us/op 309.90 us/op 0.93
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 4.0540 us/op 3.2570 us/op 1.24
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.573 us/op 21.489 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.3910 us/op 5.9620 us/op 1.07
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 4.2530 us/op 3.7470 us/op 1.14
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 100.69 us/op 91.181 us/op 1.10
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.5497 ms/op 1.5861 ms/op 0.98
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 3.4286 ms/op 2.0482 ms/op 1.67
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.1713 ms/op 2.0459 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.8505 ms/op 4.9407 ms/op 0.78
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.5252 ms/op 2.3321 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.4252 ms/op 4.3186 ms/op 1.02
Tree 40 250000 create 418.43 ms/op 338.15 ms/op 1.24
Tree 40 250000 get(125000) 95.589 ns/op 101.67 ns/op 0.94
Tree 40 250000 set(125000) 1.0288 us/op 1.0706 us/op 0.96
Tree 40 250000 toArray() 12.008 ms/op 10.959 ms/op 1.10
Tree 40 250000 iterate all - toArray() + loop 12.352 ms/op 11.020 ms/op 1.12
Tree 40 250000 iterate all - get(i) 39.099 ms/op 40.855 ms/op 0.96
Array 250000 create 3.9775 ms/op 3.1774 ms/op 1.25
Array 250000 clone - spread 855.43 us/op 902.37 us/op 0.95
Array 250000 get(125000) 0.29500 ns/op 0.29700 ns/op 0.99
Array 250000 set(125000) 0.29800 ns/op 0.30100 ns/op 0.99
Array 250000 iterate all - loop 57.766 us/op 59.043 us/op 0.98
phase0 afterProcessEpoch - 250000 vs - 7PWei 52.260 ms/op 42.334 ms/op 1.23
Array.fill - length 1000000 5.3723 ms/op 5.2416 ms/op 1.02
Array push - length 1000000 20.109 ms/op 18.596 ms/op 1.08
Array.get 0.20949 ns/op 0.20978 ns/op 1.00
Uint8Array.get 0.21038 ns/op 0.21037 ns/op 1.00
phase0 beforeProcessEpoch - 250000 vs - 7PWei 22.421 ms/op 19.192 ms/op 1.17
altair processEpoch - mainnet_e81889 527.86 ms/op 370.11 ms/op 1.43
mainnet_e81889 - altair beforeProcessEpoch 21.946 ms/op 19.399 ms/op 1.13
mainnet_e81889 - altair processJustificationAndFinalization 6.6130 us/op 7.6290 us/op 0.87
mainnet_e81889 - altair processInactivityUpdates 3.8989 ms/op 3.6970 ms/op 1.05
mainnet_e81889 - altair processRewardsAndPenalties 46.618 ms/op 18.808 ms/op 2.48
mainnet_e81889 - altair processRegistryUpdates 576.00 ns/op 592.00 ns/op 0.97
mainnet_e81889 - altair processSlashings 137.00 ns/op 137.00 ns/op 1.00
mainnet_e81889 - altair processEth1DataReset 132.00 ns/op 137.00 ns/op 0.96
mainnet_e81889 - altair processEffectiveBalanceUpdates 4.1760 ms/op 1.8075 ms/op 2.31
mainnet_e81889 - altair processSlashingsReset 685.00 ns/op 732.00 ns/op 0.94
mainnet_e81889 - altair processRandaoMixesReset 1.3880 us/op 1.4660 us/op 0.95
mainnet_e81889 - altair processHistoricalRootsUpdate 141.00 ns/op 137.00 ns/op 1.03
mainnet_e81889 - altair processParticipationFlagUpdates 458.00 ns/op 457.00 ns/op 1.00
mainnet_e81889 - altair processSyncCommitteeUpdates 112.00 ns/op 108.00 ns/op 1.04
mainnet_e81889 - altair afterProcessEpoch 42.231 ms/op 47.073 ms/op 0.90
capella processEpoch - mainnet_e217614 1.1292 s/op 981.88 ms/op 1.15
mainnet_e217614 - capella beforeProcessEpoch 76.074 ms/op 57.390 ms/op 1.33
mainnet_e217614 - capella processJustificationAndFinalization 5.8550 us/op 7.4910 us/op 0.78
mainnet_e217614 - capella processInactivityUpdates 35.296 ms/op 13.015 ms/op 2.71
mainnet_e217614 - capella processRewardsAndPenalties 90.855 ms/op 91.710 ms/op 0.99
mainnet_e217614 - capella processRegistryUpdates 4.7200 us/op 4.8330 us/op 0.98
mainnet_e217614 - capella processSlashings 139.00 ns/op 140.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 135.00 ns/op 133.00 ns/op 1.02
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.6229 ms/op 12.087 ms/op 0.47
mainnet_e217614 - capella processSlashingsReset 697.00 ns/op 689.00 ns/op 1.01
mainnet_e217614 - capella processRandaoMixesReset 1.2290 us/op 1.4010 us/op 0.88
mainnet_e217614 - capella processHistoricalRootsUpdate 134.00 ns/op 135.00 ns/op 0.99
mainnet_e217614 - capella processParticipationFlagUpdates 453.00 ns/op 452.00 ns/op 1.00
mainnet_e217614 - capella afterProcessEpoch 110.67 ms/op 110.81 ms/op 1.00
phase0 processEpoch - mainnet_e58758 473.63 ms/op 348.34 ms/op 1.36
mainnet_e58758 - phase0 beforeProcessEpoch 111.14 ms/op 71.032 ms/op 1.56
mainnet_e58758 - phase0 processJustificationAndFinalization 7.3670 us/op 6.6810 us/op 1.10
mainnet_e58758 - phase0 processRewardsAndPenalties 21.321 ms/op 17.252 ms/op 1.24
mainnet_e58758 - phase0 processRegistryUpdates 2.3960 us/op 2.3050 us/op 1.04
mainnet_e58758 - phase0 processSlashings 138.00 ns/op 135.00 ns/op 1.02
mainnet_e58758 - phase0 processEth1DataReset 134.00 ns/op 133.00 ns/op 1.01
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0329 ms/op 811.13 us/op 1.27
mainnet_e58758 - phase0 processSlashingsReset 969.00 ns/op 901.00 ns/op 1.08
mainnet_e58758 - phase0 processRandaoMixesReset 1.5340 us/op 1.3390 us/op 1.15
mainnet_e58758 - phase0 processHistoricalRootsUpdate 137.00 ns/op 133.00 ns/op 1.03
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2000 us/op 1.3410 us/op 0.89
mainnet_e58758 - phase0 afterProcessEpoch 41.692 ms/op 33.194 ms/op 1.26
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0396 ms/op 968.10 us/op 1.07
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6671 ms/op 1.5537 ms/op 1.07
altair processInactivityUpdates - 250000 normalcase 16.366 ms/op 11.197 ms/op 1.46
altair processInactivityUpdates - 250000 worstcase 15.962 ms/op 11.065 ms/op 1.44
phase0 processRegistryUpdates - 250000 normalcase 8.0820 us/op 2.2430 us/op 3.60
phase0 processRegistryUpdates - 250000 badcase_full_deposits 158.12 us/op 137.49 us/op 1.15
phase0 processRegistryUpdates - 250000 worstcase 0.5 84.550 ms/op 72.488 ms/op 1.17
altair processRewardsAndPenalties - 250000 normalcase 22.493 ms/op 14.527 ms/op 1.55
altair processRewardsAndPenalties - 250000 worstcase 20.683 ms/op 13.978 ms/op 1.48
phase0 getAttestationDeltas - 250000 normalcase 7.9323 ms/op 5.9661 ms/op 1.33
phase0 getAttestationDeltas - 250000 worstcase 7.9534 ms/op 16.267 ms/op 0.49
phase0 processSlashings - 250000 worstcase 69.819 us/op 59.028 us/op 1.18
altair processSyncCommitteeUpdates - 250000 14.756 ms/op 11.805 ms/op 1.25
BeaconState.hashTreeRoot - No change 172.00 ns/op 165.00 ns/op 1.04
BeaconState.hashTreeRoot - 1 full validator 72.181 us/op 81.894 us/op 0.88
BeaconState.hashTreeRoot - 32 full validator 873.38 us/op 1.0611 ms/op 0.82
BeaconState.hashTreeRoot - 512 full validator 9.9746 ms/op 6.7159 ms/op 1.49
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 100.76 us/op 91.692 us/op 1.10
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.2145 ms/op 1.4685 ms/op 1.51
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.964 ms/op 24.093 ms/op 0.99
BeaconState.hashTreeRoot - 1 balances 79.658 us/op 98.647 us/op 0.81
BeaconState.hashTreeRoot - 32 balances 734.49 us/op 967.61 us/op 0.76
BeaconState.hashTreeRoot - 512 balances 7.9390 ms/op 5.1025 ms/op 1.56
BeaconState.hashTreeRoot - 250000 balances 186.38 ms/op 156.94 ms/op 1.19
aggregationBits - 2048 els - zipIndexesInBitList 21.243 us/op 19.834 us/op 1.07
regular array get 100000 times 23.844 us/op 23.010 us/op 1.04
wrappedArray get 100000 times 23.870 us/op 23.077 us/op 1.03
arrayWithProxy get 100000 times 12.627 ms/op 10.331 ms/op 1.22
ssz.Root.equals 22.103 ns/op 21.622 ns/op 1.02
byteArrayEquals 21.968 ns/op 21.431 ns/op 1.03
Buffer.compare 9.1370 ns/op 9.0190 ns/op 1.01
processSlot - 1 slots 9.4070 us/op 10.278 us/op 0.92
processSlot - 32 slots 2.7993 ms/op 2.3642 ms/op 1.18
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 7.5577 ms/op 4.9571 ms/op 1.52
getCommitteeAssignments - req 1 vs - 250000 vc 1.7516 ms/op 1.6622 ms/op 1.05
getCommitteeAssignments - req 100 vs - 250000 vc 4.4639 ms/op 3.3882 ms/op 1.32
getCommitteeAssignments - req 1000 vs - 250000 vc 4.8124 ms/op 3.6508 ms/op 1.32
findModifiedValidators - 10000 modified validators 1.1185 s/op 713.32 ms/op 1.57
findModifiedValidators - 1000 modified validators 888.31 ms/op 529.53 ms/op 1.68
findModifiedValidators - 100 modified validators 598.28 ms/op 383.80 ms/op 1.56
findModifiedValidators - 10 modified validators 403.21 ms/op 300.89 ms/op 1.34
findModifiedValidators - 1 modified validators 489.94 ms/op 296.97 ms/op 1.65
findModifiedValidators - no difference 460.63 ms/op 218.28 ms/op 2.11
migrate state 1500000 validators, 3400 modified, 2000 new 5.7061 s/op 3.9538 s/op 1.44
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7500 ns/op 3.6400 ns/op 1.03
state getBlockRootAtSlot - 250000 vs - 7PWei 394.19 ns/op 391.32 ns/op 1.01
computeProposerIndex 100000 validators 1.7633 ms/op 1.3345 ms/op 1.32
getNextSyncCommitteeIndices 1000 validators 3.9249 ms/op 2.7894 ms/op 1.41
getNextSyncCommitteeIndices 10000 validators 33.591 ms/op 25.072 ms/op 1.34
getNextSyncCommitteeIndices 100000 validators 118.47 ms/op 85.933 ms/op 1.38
computeProposers - vc 250000 580.85 us/op 538.39 us/op 1.08
computeEpochShuffling - vc 250000 51.994 ms/op 37.950 ms/op 1.37
getNextSyncCommittee - vc 250000 13.522 ms/op 9.2776 ms/op 1.46
nodejs block root to RootHex using toHex 101.34 ns/op 93.295 ns/op 1.09
nodejs block root to RootHex using toRootHex 64.821 ns/op 60.414 ns/op 1.07
nodejs fromHex(blob) 1.1928 ms/op 710.17 us/op 1.68
nodejs fromHexInto(blob) 813.04 us/op 624.26 us/op 1.30
nodejs block root to RootHex using the deprecated toHexString 638.96 ns/op 568.97 ns/op 1.12
nodejs byteArrayEquals 32 bytes (block root) 27.352 ns/op 25.661 ns/op 1.07
nodejs byteArrayEquals 48 bytes (pubkey) 39.238 ns/op 36.987 ns/op 1.06
nodejs byteArrayEquals 96 bytes (signature) 36.229 ns/op 35.115 ns/op 1.03
nodejs byteArrayEquals 1024 bytes 44.020 ns/op 41.254 ns/op 1.07
nodejs byteArrayEquals 131072 bytes (blob) 1.8439 us/op 1.7346 us/op 1.06
browser block root to RootHex using toHex 283.71 ns/op 142.26 ns/op 1.99
browser block root to RootHex using toRootHex 136.32 ns/op 128.89 ns/op 1.06
browser fromHex(blob) 1.8790 ms/op 1.3659 ms/op 1.38
browser fromHexInto(blob) 817.58 us/op 602.74 us/op 1.36
browser block root to RootHex using the deprecated toHexString 632.77 ns/op 365.03 ns/op 1.73
browser byteArrayEquals 32 bytes (block root) 29.147 ns/op 26.986 ns/op 1.08
browser byteArrayEquals 48 bytes (pubkey) 41.062 ns/op 38.010 ns/op 1.08
browser byteArrayEquals 96 bytes (signature) 76.802 ns/op 71.810 ns/op 1.07
browser byteArrayEquals 1024 bytes 784.00 ns/op 736.67 ns/op 1.06
browser byteArrayEquals 131072 bytes (blob) 120.95 us/op 92.410 us/op 1.31

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

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant