lodestar icon indicating copy to clipboard operation
lodestar copied to clipboard

fix: fix proposer boost reorg by suppressing fcu call during import

Open ensi321 opened this issue 8 months ago • 2 comments

We need to suppress fcu call during gossip block import when the incoming block is weak. This is because once notified EL, it will treat the new block as head and will not reorg back to parent if we try to reorg.

  • Add shouldOverrideForkChoiceUpdate
  • Call shouldOverrideForkChoiceUpdate during gossip block import, and skip fcu call if result is true
  • Modify predictProposerHead to be a simple wrapper around shouldOverrideForkChoiceUpdate

Closes #7235

cc. @twoeths @nflaig

ensi321 avatar May 09 '25 01:05 ensi321

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 4f9fd060aafc8ec631970549bed14769e36508cc Previous: f3e21c76794869cadedccce10ca02401e150351a Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 970.41 us/op 1.8236 ms/op 0.53
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 35.724 us/op 79.473 us/op 0.45
BLS verify - blst 1.1833 ms/op 1.1139 ms/op 1.06
BLS verifyMultipleSignatures 3 - blst 1.7973 ms/op 1.9057 ms/op 0.94
BLS verifyMultipleSignatures 8 - blst 2.5966 ms/op 2.9905 ms/op 0.87
BLS verifyMultipleSignatures 32 - blst 7.4133 ms/op 8.2302 ms/op 0.90
BLS verifyMultipleSignatures 64 - blst 11.178 ms/op 13.605 ms/op 0.82
BLS verifyMultipleSignatures 128 - blst 17.022 ms/op 23.613 ms/op 0.72
BLS deserializing 10000 signatures 725.09 ms/op 855.81 ms/op 0.85
BLS deserializing 100000 signatures 7.1101 s/op 8.6528 s/op 0.82
BLS verifyMultipleSignatures - same message - 3 - blst 862.25 us/op 1.3067 ms/op 0.66
BLS verifyMultipleSignatures - same message - 8 - blst 998.37 us/op 1.3515 ms/op 0.74
BLS verifyMultipleSignatures - same message - 32 - blst 1.6648 ms/op 2.2577 ms/op 0.74
BLS verifyMultipleSignatures - same message - 64 - blst 2.5369 ms/op 3.1603 ms/op 0.80
BLS verifyMultipleSignatures - same message - 128 - blst 4.2169 ms/op 5.3578 ms/op 0.79
BLS aggregatePubkeys 32 - blst 18.652 us/op 22.333 us/op 0.84
BLS aggregatePubkeys 128 - blst 67.509 us/op 85.228 us/op 0.79
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 54.111 ms/op 93.629 ms/op 0.58
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 45.232 ms/op 85.027 ms/op 0.53
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 34.524 ms/op 55.188 ms/op 0.63
getSlashingsAndExits - default max 71.439 us/op 109.44 us/op 0.65
getSlashingsAndExits - 2k 318.10 us/op 484.12 us/op 0.66
proposeBlockBody type=full, size=empty 5.4540 ms/op 8.7721 ms/op 0.62
isKnown best case - 1 super set check 209.00 ns/op 273.00 ns/op 0.77
isKnown normal case - 2 super set checks 204.00 ns/op 267.00 ns/op 0.76
isKnown worse case - 16 super set checks 206.00 ns/op 268.00 ns/op 0.77
InMemoryCheckpointStateCache - add get delete 2.3610 us/op 3.1540 us/op 0.75
validate api signedAggregateAndProof - struct 1.4198 ms/op 1.8370 ms/op 0.77
validate gossip signedAggregateAndProof - struct 1.7552 ms/op 1.9271 ms/op 0.91
batch validate gossip attestation - vc 640000 - chunk 32 115.27 us/op 156.45 us/op 0.74
batch validate gossip attestation - vc 640000 - chunk 64 102.39 us/op 134.48 us/op 0.76
batch validate gossip attestation - vc 640000 - chunk 128 95.138 us/op 134.57 us/op 0.71
batch validate gossip attestation - vc 640000 - chunk 256 99.977 us/op 126.48 us/op 0.79
pickEth1Vote - no votes 957.14 us/op 1.1238 ms/op 0.85
pickEth1Vote - max votes 5.9576 ms/op 12.417 ms/op 0.48
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.026 ms/op 23.515 ms/op 0.47
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.484 ms/op 34.875 ms/op 0.56
pickEth1Vote - Eth1Data fastSerialize value x2048 464.48 us/op 468.60 us/op 0.99
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.9996 ms/op 6.7722 ms/op 0.44
bytes32 toHexString 409.00 ns/op 514.00 ns/op 0.80
bytes32 Buffer.toString(hex) 265.00 ns/op 275.00 ns/op 0.96
bytes32 Buffer.toString(hex) from Uint8Array 400.00 ns/op 413.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 255.00 ns/op 284.00 ns/op 0.90
Object access 1 prop 0.12300 ns/op 0.14900 ns/op 0.83
Map access 1 prop 0.12400 ns/op 0.16700 ns/op 0.74
Object get x1000 6.0320 ns/op 6.4650 ns/op 0.93
Map get x1000 6.5140 ns/op 7.6390 ns/op 0.85
Object set x1000 28.455 ns/op 38.630 ns/op 0.74
Map set x1000 19.408 ns/op 29.825 ns/op 0.65
Return object 10000 times 0.29250 ns/op 0.33860 ns/op 0.86
Throw Error 10000 times 4.3929 us/op 5.5434 us/op 0.79
toHex 131.87 ns/op 151.07 ns/op 0.87
Buffer.from 129.77 ns/op 139.93 ns/op 0.93
shared Buffer 81.125 ns/op 93.949 ns/op 0.86
fastMsgIdFn sha256 / 200 bytes 2.2200 us/op 3.2020 us/op 0.69
fastMsgIdFn h32 xxhash / 200 bytes 210.00 ns/op 287.00 ns/op 0.73
fastMsgIdFn h64 xxhash / 200 bytes 264.00 ns/op 409.00 ns/op 0.65
fastMsgIdFn sha256 / 1000 bytes 7.7340 us/op 8.3890 us/op 0.92
fastMsgIdFn h32 xxhash / 1000 bytes 345.00 ns/op 497.00 ns/op 0.69
fastMsgIdFn h64 xxhash / 1000 bytes 348.00 ns/op 365.00 ns/op 0.95
fastMsgIdFn sha256 / 10000 bytes 67.319 us/op 72.290 us/op 0.93
fastMsgIdFn h32 xxhash / 10000 bytes 1.8650 us/op 2.0250 us/op 0.92
fastMsgIdFn h64 xxhash / 10000 bytes 1.2210 us/op 1.3440 us/op 0.91
send data - 1000 256B messages 17.537 ms/op 22.319 ms/op 0.79
send data - 1000 512B messages 21.762 ms/op 25.647 ms/op 0.85
send data - 1000 1024B messages 28.903 ms/op 33.302 ms/op 0.87
send data - 1000 1200B messages 27.164 ms/op 28.787 ms/op 0.94
send data - 1000 2048B messages 26.920 ms/op 41.740 ms/op 0.64
send data - 1000 4096B messages 30.767 ms/op 33.159 ms/op 0.93
send data - 1000 16384B messages 48.170 ms/op 55.893 ms/op 0.86
send data - 1000 65536B messages 119.82 ms/op 141.16 ms/op 0.85
enrSubnets - fastDeserialize 64 bits 948.00 ns/op 977.00 ns/op 0.97
enrSubnets - ssz BitVector 64 bits 359.00 ns/op 381.00 ns/op 0.94
enrSubnets - fastDeserialize 4 bits 137.00 ns/op 171.00 ns/op 0.80
enrSubnets - ssz BitVector 4 bits 359.00 ns/op 430.00 ns/op 0.83
prioritizePeers score -10:0 att 32-0.1 sync 2-0 123.88 us/op 143.53 us/op 0.86
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 144.03 us/op 156.11 us/op 0.92
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 210.28 us/op 226.80 us/op 0.93
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 386.68 us/op 410.81 us/op 0.94
prioritizePeers score 0:0 att 64-1 sync 4-1 541.92 us/op 496.98 us/op 1.09
array of 16000 items push then shift 1.6404 us/op 1.7913 us/op 0.92
LinkedList of 16000 items push then shift 7.8520 ns/op 8.4870 ns/op 0.93
array of 16000 items push then pop 77.778 ns/op 85.039 ns/op 0.91
LinkedList of 16000 items push then pop 7.1670 ns/op 7.8370 ns/op 0.91
array of 24000 items push then shift 2.4426 us/op 2.5918 us/op 0.94
LinkedList of 24000 items push then shift 7.2280 ns/op 8.4240 ns/op 0.86
array of 24000 items push then pop 106.35 ns/op 123.05 ns/op 0.86
LinkedList of 24000 items push then pop 8.3440 ns/op 8.8710 ns/op 0.94
intersect bitArray bitLen 8 6.6890 ns/op 6.8640 ns/op 0.97
intersect array and set length 8 40.040 ns/op 40.905 ns/op 0.98
intersect bitArray bitLen 128 31.075 ns/op 30.849 ns/op 1.01
intersect array and set length 128 667.02 ns/op 685.03 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 1.0480 us/op 1.0900 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 248 1.8090 us/op 1.8960 us/op 0.95
bitArray.getTrueBitIndexes() bitLen 512 3.7240 us/op 3.9890 us/op 0.93
Buffer.concat 32 items 660.00 ns/op 672.00 ns/op 0.98
Uint8Array.set 32 items 1.1890 us/op 1.0500 us/op 1.13
Buffer.copy 2.2630 us/op 2.1750 us/op 1.04
Uint8Array.set - with subarray 1.7930 us/op 1.6660 us/op 1.08
Uint8Array.set - without subarray 1.0100 us/op 1.0140 us/op 1.00
getUint32 - dataview 213.00 ns/op 244.00 ns/op 0.87
getUint32 - manual 127.00 ns/op 137.00 ns/op 0.93
Set add up to 64 items then delete first 2.2464 us/op 3.3332 us/op 0.67
OrderedSet add up to 64 items then delete first 3.3524 us/op 5.2390 us/op 0.64
Set add up to 64 items then delete last 2.5503 us/op 3.2255 us/op 0.79
OrderedSet add up to 64 items then delete last 4.0767 us/op 5.0992 us/op 0.80
Set add up to 64 items then delete middle 2.6807 us/op 3.8134 us/op 0.70
OrderedSet add up to 64 items then delete middle 5.5665 us/op 7.8857 us/op 0.71
Set add up to 128 items then delete first 5.1964 us/op 8.1688 us/op 0.64
OrderedSet add up to 128 items then delete first 8.4010 us/op 13.192 us/op 0.64
Set add up to 128 items then delete last 5.6154 us/op 7.9617 us/op 0.71
OrderedSet add up to 128 items then delete last 8.1515 us/op 13.633 us/op 0.60
Set add up to 128 items then delete middle 5.6092 us/op 7.3284 us/op 0.77
OrderedSet add up to 128 items then delete middle 17.227 us/op 20.498 us/op 0.84
Set add up to 256 items then delete first 12.061 us/op 17.619 us/op 0.68
OrderedSet add up to 256 items then delete first 16.204 us/op 28.387 us/op 0.57
Set add up to 256 items then delete last 10.297 us/op 16.442 us/op 0.63
OrderedSet add up to 256 items then delete last 16.119 us/op 25.666 us/op 0.63
Set add up to 256 items then delete middle 10.598 us/op 16.911 us/op 0.63
OrderedSet add up to 256 items then delete middle 41.865 us/op 53.709 us/op 0.78
transfer serialized Status (84 B) 3.2900 us/op 2.4480 us/op 1.34
copy serialized Status (84 B) 1.4130 us/op 1.2370 us/op 1.14
transfer serialized SignedVoluntaryExit (112 B) 2.3240 us/op 2.4360 us/op 0.95
copy serialized SignedVoluntaryExit (112 B) 1.2400 us/op 1.3120 us/op 0.95
transfer serialized ProposerSlashing (416 B) 2.2870 us/op 2.5610 us/op 0.89
copy serialized ProposerSlashing (416 B) 1.2800 us/op 2.0860 us/op 0.61
transfer serialized Attestation (485 B) 2.3160 us/op 3.0680 us/op 0.75
copy serialized Attestation (485 B) 1.2310 us/op 1.4310 us/op 0.86
transfer serialized AttesterSlashing (33232 B) 2.6030 us/op 2.5300 us/op 1.03
copy serialized AttesterSlashing (33232 B) 3.8220 us/op 4.5430 us/op 0.84
transfer serialized Small SignedBeaconBlock (128000 B) 3.0970 us/op 3.2650 us/op 0.95
copy serialized Small SignedBeaconBlock (128000 B) 11.878 us/op 14.684 us/op 0.81
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6020 us/op 3.6720 us/op 0.98
copy serialized Avg SignedBeaconBlock (200000 B) 14.674 us/op 20.778 us/op 0.71
transfer serialized BlobsSidecar (524380 B) 3.9850 us/op 3.8880 us/op 1.02
copy serialized BlobsSidecar (524380 B) 85.709 us/op 101.67 us/op 0.84
transfer serialized Big SignedBeaconBlock (1000000 B) 4.6680 us/op 3.8180 us/op 1.22
copy serialized Big SignedBeaconBlock (1000000 B) 151.02 us/op 139.68 us/op 1.08
pass gossip attestations to forkchoice per slot 2.7889 ms/op 2.9926 ms/op 0.93
forkChoice updateHead vc 100000 bc 64 eq 0 475.01 us/op 492.09 us/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 0 2.9181 ms/op 3.4706 ms/op 0.84
forkChoice updateHead vc 1000000 bc 64 eq 0 5.1992 ms/op 5.6516 ms/op 0.92
forkChoice updateHead vc 600000 bc 320 eq 0 3.2483 ms/op 3.1989 ms/op 1.02
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1294 ms/op 3.3833 ms/op 0.92
forkChoice updateHead vc 600000 bc 7200 eq 0 3.5162 ms/op 4.3466 ms/op 0.81
forkChoice updateHead vc 600000 bc 64 eq 1000 11.308 ms/op 11.519 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 10000 11.382 ms/op 11.808 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 14.562 ms/op 18.727 ms/op 0.78
computeDeltas 500000 validators 300 proto nodes 4.1201 ms/op 4.5423 ms/op 0.91
computeDeltas 500000 validators 1200 proto nodes 4.1581 ms/op 4.7526 ms/op 0.87
computeDeltas 500000 validators 7200 proto nodes 4.0644 ms/op 4.8598 ms/op 0.84
computeDeltas 750000 validators 300 proto nodes 6.0568 ms/op 6.6974 ms/op 0.90
computeDeltas 750000 validators 1200 proto nodes 5.9402 ms/op 6.6307 ms/op 0.90
computeDeltas 750000 validators 7200 proto nodes 6.0236 ms/op 6.4217 ms/op 0.94
computeDeltas 1400000 validators 300 proto nodes 11.293 ms/op 12.056 ms/op 0.94
computeDeltas 1400000 validators 1200 proto nodes 11.328 ms/op 13.155 ms/op 0.86
computeDeltas 1400000 validators 7200 proto nodes 11.353 ms/op 12.201 ms/op 0.93
computeDeltas 2100000 validators 300 proto nodes 17.007 ms/op 19.625 ms/op 0.87
computeDeltas 2100000 validators 1200 proto nodes 16.951 ms/op 19.885 ms/op 0.85
computeDeltas 2100000 validators 7200 proto nodes 17.284 ms/op 18.966 ms/op 0.91
altair processAttestation - 250000 vs - 7PWei normalcase 2.1051 ms/op 2.5311 ms/op 0.83
altair processAttestation - 250000 vs - 7PWei worstcase 3.1147 ms/op 3.6807 ms/op 0.85
altair processAttestation - setStatus - 1/6 committees join 126.80 us/op 144.58 us/op 0.88
altair processAttestation - setStatus - 1/3 committees join 246.35 us/op 260.22 us/op 0.95
altair processAttestation - setStatus - 1/2 committees join 334.45 us/op 393.89 us/op 0.85
altair processAttestation - setStatus - 2/3 committees join 426.83 us/op 481.04 us/op 0.89
altair processAttestation - setStatus - 4/5 committees join 596.75 us/op 645.66 us/op 0.92
altair processAttestation - setStatus - 100% committees join 707.49 us/op 753.83 us/op 0.94
altair processBlock - 250000 vs - 7PWei normalcase 5.3862 ms/op 5.0834 ms/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase hashState 30.785 ms/op 27.519 ms/op 1.12
altair processBlock - 250000 vs - 7PWei worstcase 41.230 ms/op 43.837 ms/op 0.94
altair processBlock - 250000 vs - 7PWei worstcase hashState 88.024 ms/op 85.064 ms/op 1.03
phase0 processBlock - 250000 vs - 7PWei normalcase 1.8344 ms/op 2.2428 ms/op 0.82
phase0 processBlock - 250000 vs - 7PWei worstcase 32.358 ms/op 25.585 ms/op 1.26
altair processEth1Data - 250000 vs - 7PWei normalcase 358.84 us/op 366.14 us/op 0.98
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.0350 us/op 8.7600 us/op 0.69
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 37.502 us/op 38.992 us/op 0.96
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.8130 us/op 11.132 us/op 0.88
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.9060 us/op 7.6830 us/op 0.77
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 186.41 us/op 206.86 us/op 0.90
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.7363 ms/op 1.9411 ms/op 1.41
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4391 ms/op 2.4550 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.5000 ms/op 2.4825 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.8498 ms/op 4.8417 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.5070 ms/op 2.6202 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.0565 ms/op 4.9352 ms/op 1.02
Tree 40 250000 create 428.89 ms/op 460.75 ms/op 0.93
Tree 40 250000 get(125000) 144.91 ns/op 147.29 ns/op 0.98
Tree 40 250000 set(125000) 1.5463 us/op 1.5082 us/op 1.03
Tree 40 250000 toArray() 16.013 ms/op 16.938 ms/op 0.95
Tree 40 250000 iterate all - toArray() + loop 17.403 ms/op 17.434 ms/op 1.00
Tree 40 250000 iterate all - get(i) 55.496 ms/op 55.119 ms/op 1.01
Array 250000 create 2.4554 ms/op 2.6341 ms/op 0.93
Array 250000 clone - spread 826.24 us/op 843.61 us/op 0.98
Array 250000 get(125000) 0.43300 ns/op 0.43000 ns/op 1.01
Array 250000 set(125000) 0.47700 ns/op 0.44600 ns/op 1.07
Array 250000 iterate all - loop 112.06 us/op 86.908 us/op 1.29
phase0 afterProcessEpoch - 250000 vs - 7PWei 43.818 ms/op 45.951 ms/op 0.95
Array.fill - length 1000000 3.5900 ms/op 3.7861 ms/op 0.95
Array push - length 1000000 12.806 ms/op 15.742 ms/op 0.81
Array.get 0.28250 ns/op 0.29318 ns/op 0.96
Uint8Array.get 0.45817 ns/op 0.47009 ns/op 0.97
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.854 ms/op 19.992 ms/op 0.79
altair processEpoch - mainnet_e81889 256.66 ms/op 290.28 ms/op 0.88
mainnet_e81889 - altair beforeProcessEpoch 17.931 ms/op 27.650 ms/op 0.65
mainnet_e81889 - altair processJustificationAndFinalization 7.1570 us/op 7.1450 us/op 1.00
mainnet_e81889 - altair processInactivityUpdates 4.4896 ms/op 4.8168 ms/op 0.93
mainnet_e81889 - altair processRewardsAndPenalties 41.444 ms/op 39.435 ms/op 1.05
mainnet_e81889 - altair processRegistryUpdates 715.00 ns/op 800.00 ns/op 0.89
mainnet_e81889 - altair processSlashings 192.00 ns/op 203.00 ns/op 0.95
mainnet_e81889 - altair processEth1DataReset 210.00 ns/op 203.00 ns/op 1.03
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2418 ms/op 1.3003 ms/op 0.96
mainnet_e81889 - altair processSlashingsReset 1.1890 us/op 1.1070 us/op 1.07
mainnet_e81889 - altair processRandaoMixesReset 1.4190 us/op 1.2990 us/op 1.09
mainnet_e81889 - altair processHistoricalRootsUpdate 205.00 ns/op 198.00 ns/op 1.04
mainnet_e81889 - altair processParticipationFlagUpdates 531.00 ns/op 630.00 ns/op 0.84
mainnet_e81889 - altair processSyncCommitteeUpdates 154.00 ns/op 151.00 ns/op 1.02
mainnet_e81889 - altair afterProcessEpoch 45.036 ms/op 50.228 ms/op 0.90
capella processEpoch - mainnet_e217614 1.0272 s/op 1.0501 s/op 0.98
mainnet_e217614 - capella beforeProcessEpoch 69.535 ms/op 70.331 ms/op 0.99
mainnet_e217614 - capella processJustificationAndFinalization 5.4280 us/op 6.6710 us/op 0.81
mainnet_e217614 - capella processInactivityUpdates 14.206 ms/op 15.659 ms/op 0.91
mainnet_e217614 - capella processRewardsAndPenalties 221.92 ms/op 199.90 ms/op 1.11
mainnet_e217614 - capella processRegistryUpdates 6.8510 us/op 7.2710 us/op 0.94
mainnet_e217614 - capella processSlashings 198.00 ns/op 192.00 ns/op 1.03
mainnet_e217614 - capella processEth1DataReset 194.00 ns/op 193.00 ns/op 1.01
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.3772 ms/op 4.3058 ms/op 1.02
mainnet_e217614 - capella processSlashingsReset 961.00 ns/op 1.0470 us/op 0.92
mainnet_e217614 - capella processRandaoMixesReset 1.3490 us/op 1.2500 us/op 1.08
mainnet_e217614 - capella processHistoricalRootsUpdate 212.00 ns/op 191.00 ns/op 1.11
mainnet_e217614 - capella processParticipationFlagUpdates 520.00 ns/op 582.00 ns/op 0.89
mainnet_e217614 - capella afterProcessEpoch 114.06 ms/op 126.76 ms/op 0.90
phase0 processEpoch - mainnet_e58758 282.43 ms/op 421.58 ms/op 0.67
mainnet_e58758 - phase0 beforeProcessEpoch 70.864 ms/op 88.528 ms/op 0.80
mainnet_e58758 - phase0 processJustificationAndFinalization 6.8100 us/op 7.1030 us/op 0.96
mainnet_e58758 - phase0 processRewardsAndPenalties 38.481 ms/op 43.528 ms/op 0.88
mainnet_e58758 - phase0 processRegistryUpdates 4.4850 us/op 3.6850 us/op 1.22
mainnet_e58758 - phase0 processSlashings 185.00 ns/op 210.00 ns/op 0.88
mainnet_e58758 - phase0 processEth1DataReset 184.00 ns/op 201.00 ns/op 0.92
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2093 ms/op 1.3902 ms/op 0.87
mainnet_e58758 - phase0 processSlashingsReset 1.0040 us/op 1.0700 us/op 0.94
mainnet_e58758 - phase0 processRandaoMixesReset 1.5010 us/op 1.3540 us/op 1.11
mainnet_e58758 - phase0 processHistoricalRootsUpdate 194.00 ns/op 287.00 ns/op 0.68
mainnet_e58758 - phase0 processParticipationRecordUpdates 913.00 ns/op 1.1500 us/op 0.79
mainnet_e58758 - phase0 afterProcessEpoch 35.289 ms/op 39.606 ms/op 0.89
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.8516 ms/op 1.4384 ms/op 1.29
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9746 ms/op 2.1850 ms/op 0.90
altair processInactivityUpdates - 250000 normalcase 22.996 ms/op 22.852 ms/op 1.01
altair processInactivityUpdates - 250000 worstcase 19.990 ms/op 21.512 ms/op 0.93
phase0 processRegistryUpdates - 250000 normalcase 6.8190 us/op 7.7790 us/op 0.88
phase0 processRegistryUpdates - 250000 badcase_full_deposits 333.56 us/op 352.70 us/op 0.95
phase0 processRegistryUpdates - 250000 worstcase 0.5 115.80 ms/op 116.01 ms/op 1.00
altair processRewardsAndPenalties - 250000 normalcase 32.606 ms/op 32.632 ms/op 1.00
altair processRewardsAndPenalties - 250000 worstcase 29.260 ms/op 32.562 ms/op 0.90
phase0 getAttestationDeltas - 250000 normalcase 6.9362 ms/op 10.337 ms/op 0.67
phase0 getAttestationDeltas - 250000 worstcase 5.9447 ms/op 8.0794 ms/op 0.74
phase0 processSlashings - 250000 worstcase 121.82 us/op 100.71 us/op 1.21
altair processSyncCommitteeUpdates - 250000 10.785 ms/op 12.742 ms/op 0.85
BeaconState.hashTreeRoot - No change 245.00 ns/op 250.00 ns/op 0.98
BeaconState.hashTreeRoot - 1 full validator 98.405 us/op 93.627 us/op 1.05
BeaconState.hashTreeRoot - 32 full validator 959.11 us/op 1.0032 ms/op 0.96
BeaconState.hashTreeRoot - 512 full validator 10.203 ms/op 13.435 ms/op 0.76
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 139.61 us/op 125.63 us/op 1.11
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.7582 ms/op 2.0543 ms/op 1.34
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 22.611 ms/op 34.712 ms/op 0.65
BeaconState.hashTreeRoot - 1 balances 116.57 us/op 102.60 us/op 1.14
BeaconState.hashTreeRoot - 32 balances 1.2887 ms/op 1.1624 ms/op 1.11
BeaconState.hashTreeRoot - 512 balances 9.3246 ms/op 11.458 ms/op 0.81
BeaconState.hashTreeRoot - 250000 balances 192.17 ms/op 221.02 ms/op 0.87
aggregationBits - 2048 els - zipIndexesInBitList 21.719 us/op 26.082 us/op 0.83
byteArrayEquals 32 52.524 ns/op 58.110 ns/op 0.90
Buffer.compare 32 16.935 ns/op 18.610 ns/op 0.91
byteArrayEquals 1024 1.5594 us/op 1.7068 us/op 0.91
Buffer.compare 1024 24.670 ns/op 41.376 ns/op 0.60
byteArrayEquals 16384 24.984 us/op 27.356 us/op 0.91
Buffer.compare 16384 197.41 ns/op 218.34 ns/op 0.90
byteArrayEquals 123687377 187.06 ms/op 210.69 ms/op 0.89
Buffer.compare 123687377 6.1871 ms/op 10.526 ms/op 0.59
byteArrayEquals 32 - diff last byte 51.307 ns/op 58.371 ns/op 0.88
Buffer.compare 32 - diff last byte 16.857 ns/op 18.955 ns/op 0.89
byteArrayEquals 1024 - diff last byte 1.5488 us/op 1.7872 us/op 0.87
Buffer.compare 1024 - diff last byte 24.711 ns/op 27.778 ns/op 0.89
byteArrayEquals 16384 - diff last byte 24.675 us/op 27.436 us/op 0.90
Buffer.compare 16384 - diff last byte 193.86 ns/op 224.67 ns/op 0.86
byteArrayEquals 123687377 - diff last byte 186.87 ms/op 212.04 ms/op 0.88
Buffer.compare 123687377 - diff last byte 6.1818 ms/op 8.3645 ms/op 0.74
byteArrayEquals 32 - random bytes 5.0380 ns/op 5.2640 ns/op 0.96
Buffer.compare 32 - random bytes 16.872 ns/op 18.581 ns/op 0.91
byteArrayEquals 1024 - random bytes 5.0280 ns/op 5.3950 ns/op 0.93
Buffer.compare 1024 - random bytes 16.973 ns/op 18.307 ns/op 0.93
byteArrayEquals 16384 - random bytes 5.0860 ns/op 5.3520 ns/op 0.95
Buffer.compare 16384 - random bytes 16.912 ns/op 17.753 ns/op 0.95
byteArrayEquals 123687377 - random bytes 8.1900 ns/op 6.6200 ns/op 1.24
Buffer.compare 123687377 - random bytes 18.260 ns/op 18.990 ns/op 0.96
regular array get 100000 times 36.583 us/op 35.238 us/op 1.04
wrappedArray get 100000 times 40.760 us/op 35.106 us/op 1.16
arrayWithProxy get 100000 times 13.969 ms/op 14.141 ms/op 0.99
ssz.Root.equals 46.390 ns/op 49.818 ns/op 0.93
byteArrayEquals 45.622 ns/op 48.795 ns/op 0.93
Buffer.compare 10.407 ns/op 11.231 ns/op 0.93
processSlot - 1 slots 10.372 us/op 11.578 us/op 0.90
processSlot - 32 slots 2.8049 ms/op 3.4348 ms/op 0.82
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.8520 ms/op 3.7361 ms/op 0.76
getCommitteeAssignments - req 1 vs - 250000 vc 2.0980 ms/op 2.1855 ms/op 0.96
getCommitteeAssignments - req 100 vs - 250000 vc 4.0786 ms/op 4.6648 ms/op 0.87
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3160 ms/op 4.8353 ms/op 0.89
findModifiedValidators - 10000 modified validators 711.32 ms/op 790.59 ms/op 0.90
findModifiedValidators - 1000 modified validators 703.75 ms/op 727.47 ms/op 0.97
findModifiedValidators - 100 modified validators 274.26 ms/op 275.49 ms/op 1.00
findModifiedValidators - 10 modified validators 133.67 ms/op 149.80 ms/op 0.89
findModifiedValidators - 1 modified validators 145.32 ms/op 146.67 ms/op 0.99
findModifiedValidators - no difference 185.84 ms/op 193.39 ms/op 0.96
compare ViewDUs 6.1506 s/op 7.2192 s/op 0.85
compare each validator Uint8Array 1.5586 s/op 1.4788 s/op 1.05
compare ViewDU to Uint8Array 906.95 ms/op 1.4126 s/op 0.64
migrate state 1000000 validators, 24 modified, 0 new 903.72 ms/op 878.12 ms/op 1.03
migrate state 1000000 validators, 1700 modified, 1000 new 1.2131 s/op 1.1832 s/op 1.03
migrate state 1000000 validators, 3400 modified, 2000 new 1.3499 s/op 1.3391 s/op 1.01
migrate state 1500000 validators, 24 modified, 0 new 938.87 ms/op 986.58 ms/op 0.95
migrate state 1500000 validators, 1700 modified, 1000 new 1.1932 s/op 1.1494 s/op 1.04
migrate state 1500000 validators, 3400 modified, 2000 new 1.2318 s/op 1.4226 s/op 0.87
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.7200 ns/op 4.5800 ns/op 1.47
state getBlockRootAtSlot - 250000 vs - 7PWei 387.38 ns/op 538.43 ns/op 0.72
naive computeProposerIndex 100000 validators 49.113 ms/op 58.288 ms/op 0.84
computeProposerIndex 100000 validators 1.4675 ms/op 1.5804 ms/op 0.93
naiveGetNextSyncCommitteeIndices 1000 validators 7.8730 s/op 8.8307 s/op 0.89
getNextSyncCommitteeIndices 1000 validators 110.08 ms/op 120.63 ms/op 0.91
naiveGetNextSyncCommitteeIndices 10000 validators 7.7207 s/op 8.5427 s/op 0.90
getNextSyncCommitteeIndices 10000 validators 107.35 ms/op 121.28 ms/op 0.89
naiveGetNextSyncCommitteeIndices 100000 validators 7.3765 s/op 8.7672 s/op 0.84
getNextSyncCommitteeIndices 100000 validators 107.39 ms/op 127.21 ms/op 0.84
naive computeShuffledIndex 100000 validators 23.431 s/op 28.948 s/op 0.81
cached computeShuffledIndex 100000 validators 545.93 ms/op 638.35 ms/op 0.86
naive computeShuffledIndex 2000000 validators 476.27 s/op 499.74 s/op 0.95
cached computeShuffledIndex 2000000 validators 28.876 s/op 30.749 s/op 0.94
computeProposers - vc 250000 621.31 us/op 619.58 us/op 1.00
computeEpochShuffling - vc 250000 40.939 ms/op 42.019 ms/op 0.97
getNextSyncCommittee - vc 250000 10.249 ms/op 10.382 ms/op 0.99
computeSigningRoot for AttestationData 20.133 us/op 21.793 us/op 0.92
hash AttestationData serialized data then Buffer.toString(base64) 1.5663 us/op 1.6117 us/op 0.97
toHexString serialized data 1.1235 us/op 1.2173 us/op 0.92
Buffer.toString(base64) 158.85 ns/op 160.19 ns/op 0.99
nodejs block root to RootHex using toHex 138.01 ns/op 139.11 ns/op 0.99
nodejs block root to RootHex using toRootHex 83.662 ns/op 85.307 ns/op 0.98
browser block root to RootHex using the deprecated toHexString 212.39 ns/op 215.14 ns/op 0.99
browser block root to RootHex using toHex 171.21 ns/op 169.20 ns/op 1.01
browser block root to RootHex using toRootHex 160.39 ns/op 159.19 ns/op 1.01

by benchmarkbot/action

github-actions[bot] avatar May 09 '25 02:05 github-actions[bot]

Codecov Report

Attention: Patch coverage is 32.74336% with 76 lines in your changes missing coverage. Please review.

Project coverage is 55.74%. Comparing base (f3e21c7) to head (b16f27a). Report is 2 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7810      +/-   ##
============================================
- Coverage     55.77%   55.74%   -0.04%     
============================================
  Files           834      834              
  Lines         59549    59640      +91     
  Branches       4601     4610       +9     
============================================
+ Hits          33214    33245      +31     
- Misses        26267    26326      +59     
- Partials         68       69       +1     
:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar May 09 '25 02:05 codecov[bot]

Would like an update on this for #7926 and its testing status on feat4

philknows avatar Jul 07 '25 20:07 philknows

:tada: This PR is included in v1.33.0 :tada:

wemeetagain avatar Aug 06 '25 14:08 wemeetagain