Skip to content

docs: prefer targeted pre-push tests#9643

Open
nflaig wants to merge 2 commits into
unstablefrom
nflaig/update-agents-test-guidance
Open

docs: prefer targeted pre-push tests#9643
nflaig wants to merge 2 commits into
unstablefrom
nflaig/update-agents-test-guidance

Conversation

@nflaig

@nflaig nflaig commented Jul 10, 2026

Copy link
Copy Markdown
Member

What changed

  • make change-relevant checks the pre-push default
  • prefer targeted tests for changed behavior
  • reserve the full pnpm test:unit suite for broad changes that cannot be covered adequately by targeted tests or when explicitly requested
  • align the feature and bug-fix workflows with the same guidance

Why

Running the complete unit suite for narrow script, documentation, or isolated code changes adds significant local feedback time without improving validation over an applicable targeted test.

Validation

  • pnpm docs:lint

This PR was written with assistance from Codex.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the AGENTS.md file to optimize the pre-push checklist and common tasks workflows, advising developers to run only relevant checks and targeted tests instead of the full unit test suite. The feedback suggests improving the bug-fixing workflow by explicitly prompting developers to run targeted tests for the affected area to prevent regressions.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread AGENTS.md Outdated
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: c92b41d Previous: 2e78647 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 882.51 us/op 978.24 us/op 0.90
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.688 us/op 42.137 us/op 0.92
BLS verify - blst 734.51 us/op 680.79 us/op 1.08
BLS verifyMultipleSignatures 3 - blst 1.3191 ms/op 1.4225 ms/op 0.93
BLS verifyMultipleSignatures 8 - blst 2.0895 ms/op 2.2357 ms/op 0.93
BLS verifyMultipleSignatures 32 - blst 6.5544 ms/op 7.1271 ms/op 0.92
BLS verifyMultipleSignatures 64 - blst 13.262 ms/op 13.944 ms/op 0.95
BLS verifyMultipleSignatures 128 - blst 24.918 ms/op 26.622 ms/op 0.94
BLS deserializing 10000 signatures 628.02 ms/op 662.52 ms/op 0.95
BLS deserializing 100000 signatures 6.3524 s/op 6.6248 s/op 0.96
BLS verifyMultipleSignatures - same message - 3 - blst 760.36 us/op 805.10 us/op 0.94
BLS verifyMultipleSignatures - same message - 8 - blst 886.37 us/op 962.10 us/op 0.92
BLS verifyMultipleSignatures - same message - 32 - blst 1.5480 ms/op 1.4968 ms/op 1.03
BLS verifyMultipleSignatures - same message - 64 - blst 2.4361 ms/op 2.3647 ms/op 1.03
BLS verifyMultipleSignatures - same message - 128 - blst 4.1899 ms/op 4.2184 ms/op 0.99
BLS aggregatePubkeys 32 - blst 18.113 us/op 18.266 us/op 0.99
BLS aggregatePubkeys 128 - blst 64.383 us/op 65.210 us/op 0.99
getSlashingsAndExits - default max 48.690 us/op 50.541 us/op 0.96
getSlashingsAndExits - 2k 357.43 us/op 375.35 us/op 0.95
proposeBlockBody type=full, size=empty 718.41 us/op 647.19 us/op 1.11
isKnown best case - 1 super set check 172.00 ns/op 171.00 ns/op 1.01
isKnown normal case - 2 super set checks 174.00 ns/op 167.00 ns/op 1.04
isKnown worse case - 16 super set checks 173.00 ns/op 165.00 ns/op 1.05
validate api signedAggregateAndProof - struct 1.4992 ms/op 1.5281 ms/op 0.98
validate gossip signedAggregateAndProof - struct 1.4769 ms/op 1.5295 ms/op 0.97
batch validate gossip attestation - vc 640000 - chunk 32 107.93 us/op 106.73 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 95.734 us/op 94.815 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 128 90.932 us/op 90.795 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 256 90.269 us/op 86.420 us/op 1.04
bytes32 toHexString 293.00 ns/op 282.00 ns/op 1.04
bytes32 Buffer.toString(hex) 174.00 ns/op 175.00 ns/op 0.99
bytes32 Buffer.toString(hex) from Uint8Array 246.00 ns/op 252.00 ns/op 0.98
bytes32 Buffer.toString(hex) + 0x 173.00 ns/op 175.00 ns/op 0.99
Return object 10000 times 0.21230 ns/op 0.21450 ns/op 0.99
Throw Error 10000 times 3.8788 us/op 3.3881 us/op 1.14
toHex 100.43 ns/op 111.23 ns/op 0.90
Buffer.from 92.281 ns/op 97.202 ns/op 0.95
shared Buffer 59.339 ns/op 63.651 ns/op 0.93
fastMsgIdFn sha256 / 200 bytes 1.4730 us/op 1.4910 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 161.00 ns/op 153.00 ns/op 1.05
fastMsgIdFn h64 xxhash / 200 bytes 210.00 ns/op 211.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 4.8540 us/op 4.8180 us/op 1.01
fastMsgIdFn h32 xxhash / 1000 bytes 255.00 ns/op 245.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 1000 bytes 261.00 ns/op 259.00 ns/op 1.01
fastMsgIdFn sha256 / 10000 bytes 42.733 us/op 42.323 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.3200 us/op 1.2750 us/op 1.04
fastMsgIdFn h64 xxhash / 10000 bytes 856.00 ns/op 839.00 ns/op 1.02
send data - 1000 256B messages 5.3190 ms/op 4.7221 ms/op 1.13
send data - 1000 512B messages 6.5654 ms/op 5.2628 ms/op 1.25
send data - 1000 1024B messages 6.1297 ms/op 5.6094 ms/op 1.09
send data - 1000 1200B messages 7.2937 ms/op 6.2860 ms/op 1.16
send data - 1000 2048B messages 10.670 ms/op 15.070 ms/op 0.71
send data - 1000 4096B messages 60.756 ms/op 48.128 ms/op 1.26
send data - 1000 16384B messages 288.07 ms/op 216.95 ms/op 1.33
send data - 1000 65536B messages 1.3689 s/op 1.3525 s/op 1.01
enrSubnets - fastDeserialize 64 bits 762.00 ns/op 783.00 ns/op 0.97
enrSubnets - ssz BitVector 64 bits 286.00 ns/op 270.00 ns/op 1.06
enrSubnets - fastDeserialize 4 bits 107.00 ns/op 106.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 292.00 ns/op 270.00 ns/op 1.08
prioritizePeers score -10:0 att 32-0.1 sync 2-0 214.81 us/op 206.66 us/op 1.04
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 242.81 us/op 237.68 us/op 1.02
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 354.55 us/op 345.90 us/op 1.03
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 636.92 us/op 611.50 us/op 1.04
prioritizePeers score 0:0 att 64-1 sync 4-1 741.87 us/op 705.30 us/op 1.05
array of 16000 items push then shift 1.2716 us/op 1.3107 us/op 0.97
LinkedList of 16000 items push then shift 8.3860 ns/op 7.0080 ns/op 1.20
array of 16000 items push then pop 72.994 ns/op 68.972 ns/op 1.06
LinkedList of 16000 items push then pop 6.6500 ns/op 6.0300 ns/op 1.10
array of 24000 items push then shift 1.9006 us/op 1.9934 us/op 0.95
LinkedList of 24000 items push then shift 8.2250 ns/op 6.8720 ns/op 1.20
array of 24000 items push then pop 101.37 ns/op 100.96 ns/op 1.00
LinkedList of 24000 items push then pop 6.3090 ns/op 6.0970 ns/op 1.03
intersect bitArray bitLen 8 5.3530 ns/op 4.8250 ns/op 1.11
intersect array and set length 8 30.031 ns/op 29.761 ns/op 1.01
intersect bitArray bitLen 128 24.471 ns/op 24.359 ns/op 1.00
intersect array and set length 128 500.60 ns/op 502.75 ns/op 1.00
bitArray.getTrueBitIndexes() bitLen 128 1.0860 us/op 1.0670 us/op 1.02
bitArray.getTrueBitIndexes() bitLen 248 1.8430 us/op 1.8140 us/op 1.02
bitArray.getTrueBitIndexes() bitLen 512 3.7110 us/op 3.7330 us/op 0.99
Full columns - reconstruct all 6 blobs 169.85 us/op 152.95 us/op 1.11
Full columns - reconstruct half of the blobs out of 6 72.587 us/op 92.801 us/op 0.78
Full columns - reconstruct single blob out of 6 34.635 us/op 36.586 us/op 0.95
Half columns - reconstruct all 6 blobs 396.09 ms/op 392.30 ms/op 1.01
Half columns - reconstruct half of the blobs out of 6 198.33 ms/op 201.42 ms/op 0.98
Half columns - reconstruct single blob out of 6 71.140 ms/op 69.228 ms/op 1.03
Set add up to 64 items then delete first 1.6370 us/op 1.7008 us/op 0.96
OrderedSet add up to 64 items then delete first 2.5172 us/op 2.5950 us/op 0.97
Set add up to 64 items then delete last 1.8777 us/op 2.0107 us/op 0.93
OrderedSet add up to 64 items then delete last 2.8162 us/op 2.9978 us/op 0.94
Set add up to 64 items then delete middle 2.0913 us/op 1.9583 us/op 1.07
OrderedSet add up to 64 items then delete middle 4.3979 us/op 4.5796 us/op 0.96
Set add up to 128 items then delete first 3.7545 us/op 3.8155 us/op 0.98
OrderedSet add up to 128 items then delete first 5.8727 us/op 5.7512 us/op 1.02
Set add up to 128 items then delete last 3.6281 us/op 3.8222 us/op 0.95
OrderedSet add up to 128 items then delete last 5.6908 us/op 6.0359 us/op 0.94
Set add up to 128 items then delete middle 3.6078 us/op 3.9141 us/op 0.92
OrderedSet add up to 128 items then delete middle 11.407 us/op 12.402 us/op 0.92
Set add up to 256 items then delete first 7.4466 us/op 7.6544 us/op 0.97
OrderedSet add up to 256 items then delete first 12.559 us/op 11.533 us/op 1.09
Set add up to 256 items then delete last 7.7168 us/op 7.5830 us/op 1.02
OrderedSet add up to 256 items then delete last 11.881 us/op 12.026 us/op 0.99
Set add up to 256 items then delete middle 7.1338 us/op 7.4175 us/op 0.96
OrderedSet add up to 256 items then delete middle 35.410 us/op 36.153 us/op 0.98
runFastConfirmationRules vc:100000 bc:96 eq:0 4.6333 ms/op 4.5628 ms/op 1.02
runFastConfirmationRules vc:600000 bc:96 eq:0 36.230 ms/op 38.174 ms/op 0.95
runFastConfirmationRules vc:1000000 bc:96 eq:0 59.630 ms/op 61.878 ms/op 0.96
runFastConfirmationRules vc:600000 bc:320 eq:0 35.703 ms/op 38.103 ms/op 0.94
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.1164 s/op 1.3070 s/op 0.85
pass gossip attestations to forkchoice per slot 2.6121 ms/op 2.7433 ms/op 0.95
forkChoice updateHead vc 100000 bc 64 eq 0 408.51 us/op 427.10 us/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 0 2.4527 ms/op 2.5073 ms/op 0.98
forkChoice updateHead vc 1000000 bc 64 eq 0 4.0484 ms/op 4.3270 ms/op 0.94
forkChoice updateHead vc 600000 bc 320 eq 0 2.3717 ms/op 2.7619 ms/op 0.86
forkChoice updateHead vc 600000 bc 1200 eq 0 2.5306 ms/op 2.6204 ms/op 0.97
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3844 ms/op 3.4396 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 1000 2.4063 ms/op 2.5657 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4564 ms/op 2.6344 ms/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 300000 6.5742 ms/op 6.6695 ms/op 0.99
computeDeltas 1400000 validators 0% inactive 12.620 ms/op 12.527 ms/op 1.01
computeDeltas 1400000 validators 10% inactive 11.333 ms/op 11.855 ms/op 0.96
computeDeltas 1400000 validators 20% inactive 10.743 ms/op 11.141 ms/op 0.96
computeDeltas 1400000 validators 50% inactive 8.7457 ms/op 9.1957 ms/op 0.95
computeDeltas 2100000 validators 0% inactive 17.858 ms/op 18.906 ms/op 0.94
computeDeltas 2100000 validators 10% inactive 17.001 ms/op 17.716 ms/op 0.96
computeDeltas 2100000 validators 20% inactive 16.037 ms/op 16.662 ms/op 0.96
computeDeltas 2100000 validators 50% inactive 10.529 ms/op 11.117 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei normalcase 2.4733 ms/op 2.0237 ms/op 1.22
altair processAttestation - 250000 vs - 7PWei worstcase 3.1313 ms/op 3.1843 ms/op 0.98
altair processAttestation - setStatus - 1/6 committees join 101.39 us/op 105.58 us/op 0.96
altair processAttestation - setStatus - 1/3 committees join 200.36 us/op 205.07 us/op 0.98
altair processAttestation - setStatus - 1/2 committees join 275.21 us/op 288.75 us/op 0.95
altair processAttestation - setStatus - 2/3 committees join 354.04 us/op 372.32 us/op 0.95
altair processAttestation - setStatus - 4/5 committees join 502.60 us/op 526.52 us/op 0.95
altair processAttestation - setStatus - 100% committees join 586.39 us/op 613.54 us/op 0.96
altair processBlock - 250000 vs - 7PWei normalcase 4.2325 ms/op 4.3069 ms/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase hashState 18.580 ms/op 16.625 ms/op 1.12
altair processBlock - 250000 vs - 7PWei worstcase 21.486 ms/op 22.512 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase hashState 42.612 ms/op 42.705 ms/op 1.00
phase0 processBlock - 250000 vs - 7PWei normalcase 1.8221 ms/op 1.4593 ms/op 1.25
phase0 processBlock - 250000 vs - 7PWei worstcase 20.697 ms/op 17.411 ms/op 1.19
altair processEth1Data - 250000 vs - 7PWei normalcase 287.33 us/op 308.80 us/op 0.93
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.2440 us/op 3.0600 us/op 1.06
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 20.648 us/op 20.242 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.6280 us/op 6.4020 us/op 0.88
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7300 us/op 3.5130 us/op 1.06
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 86.383 us/op 90.083 us/op 0.96
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3754 ms/op 1.4083 ms/op 0.98
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8157 ms/op 1.8653 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7965 ms/op 1.8627 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.8188 ms/op 3.8453 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0585 ms/op 2.0910 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0982 ms/op 4.1783 ms/op 0.98
Tree 40 250000 create 343.52 ms/op 336.82 ms/op 1.02
Tree 40 250000 get(125000) 90.858 ns/op 95.760 ns/op 0.95
Tree 40 250000 set(125000) 988.55 ns/op 1.0281 us/op 0.96
Tree 40 250000 toArray() 15.687 ms/op 15.712 ms/op 1.00
Tree 40 250000 iterate all - toArray() + loop 15.166 ms/op 14.966 ms/op 1.01
Tree 40 250000 iterate all - get(i) 38.231 ms/op 41.270 ms/op 0.93
Array 250000 create 2.2049 ms/op 2.2524 ms/op 0.98
Array 250000 clone - spread 675.17 us/op 700.29 us/op 0.96
Array 250000 get(125000) 0.29500 ns/op 0.31500 ns/op 0.94
Array 250000 set(125000) 0.29900 ns/op 0.32600 ns/op 0.92
Array 250000 iterate all - loop 56.500 us/op 58.013 us/op 0.97
phase0 afterProcessEpoch - 250000 vs - 7PWei 39.738 ms/op 40.026 ms/op 0.99
Array.fill - length 1000000 2.5573 ms/op 2.3110 ms/op 1.11
Array push - length 1000000 9.9557 ms/op 9.9245 ms/op 1.00
Array.get 0.21178 ns/op 0.20878 ns/op 1.01
Uint8Array.get 0.23860 ns/op 0.24350 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.960 ms/op 15.192 ms/op 0.98
altair processEpoch - mainnet_e81889 281.39 ms/op 262.23 ms/op 1.07
mainnet_e81889 - altair beforeProcessEpoch 16.420 ms/op 16.076 ms/op 1.02
mainnet_e81889 - altair processJustificationAndFinalization 6.3220 us/op 6.3550 us/op 0.99
mainnet_e81889 - altair processInactivityUpdates 4.3557 ms/op 3.5651 ms/op 1.22
mainnet_e81889 - altair processRewardsAndPenalties 19.940 ms/op 20.397 ms/op 0.98
mainnet_e81889 - altair processRegistryUpdates 530.00 ns/op 554.00 ns/op 0.96
mainnet_e81889 - altair processSlashings 135.00 ns/op 133.00 ns/op 1.02
mainnet_e81889 - altair processEth1DataReset 131.00 ns/op 129.00 ns/op 1.02
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.8242 ms/op 1.1962 ms/op 1.52
mainnet_e81889 - altair processSlashingsReset 660.00 ns/op 711.00 ns/op 0.93
mainnet_e81889 - altair processRandaoMixesReset 1.2790 us/op 1.3170 us/op 0.97
mainnet_e81889 - altair processHistoricalRootsUpdate 134.00 ns/op 133.00 ns/op 1.01
mainnet_e81889 - altair processParticipationFlagUpdates 421.00 ns/op 442.00 ns/op 0.95
mainnet_e81889 - altair processSyncCommitteeUpdates 110.00 ns/op 109.00 ns/op 1.01
mainnet_e81889 - altair afterProcessEpoch 40.873 ms/op 42.165 ms/op 0.97
capella processEpoch - mainnet_e217614 795.07 ms/op 745.34 ms/op 1.07
mainnet_e217614 - capella beforeProcessEpoch 56.675 ms/op 55.755 ms/op 1.02
mainnet_e217614 - capella processJustificationAndFinalization 6.3240 us/op 5.2810 us/op 1.20
mainnet_e217614 - capella processInactivityUpdates 16.438 ms/op 11.058 ms/op 1.49
mainnet_e217614 - capella processRewardsAndPenalties 97.893 ms/op 89.684 ms/op 1.09
mainnet_e217614 - capella processRegistryUpdates 4.4560 us/op 4.4860 us/op 0.99
mainnet_e217614 - capella processSlashings 138.00 ns/op 134.00 ns/op 1.03
mainnet_e217614 - capella processEth1DataReset 134.00 ns/op 133.00 ns/op 1.01
mainnet_e217614 - capella processEffectiveBalanceUpdates 18.291 ms/op 5.1598 ms/op 3.54
mainnet_e217614 - capella processSlashingsReset 690.00 ns/op 667.00 ns/op 1.03
mainnet_e217614 - capella processRandaoMixesReset 1.3420 us/op 1.1780 us/op 1.14
mainnet_e217614 - capella processHistoricalRootsUpdate 137.00 ns/op 127.00 ns/op 1.08
mainnet_e217614 - capella processParticipationFlagUpdates 450.00 ns/op 418.00 ns/op 1.08
mainnet_e217614 - capella afterProcessEpoch 110.29 ms/op 110.14 ms/op 1.00
phase0 processEpoch - mainnet_e58758 325.42 ms/op 239.74 ms/op 1.36
mainnet_e58758 - phase0 beforeProcessEpoch 73.856 ms/op 43.070 ms/op 1.71
mainnet_e58758 - phase0 processJustificationAndFinalization 6.6120 us/op 4.9140 us/op 1.35
mainnet_e58758 - phase0 processRewardsAndPenalties 16.171 ms/op 15.025 ms/op 1.08
mainnet_e58758 - phase0 processRegistryUpdates 2.2560 us/op 2.2100 us/op 1.02
mainnet_e58758 - phase0 processSlashings 266.00 ns/op 135.00 ns/op 1.97
mainnet_e58758 - phase0 processEth1DataReset 133.00 ns/op 128.00 ns/op 1.04
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 832.21 us/op 967.52 us/op 0.86
mainnet_e58758 - phase0 processSlashingsReset 892.00 ns/op 803.00 ns/op 1.11
mainnet_e58758 - phase0 processRandaoMixesReset 1.3480 us/op 1.0300 us/op 1.31
mainnet_e58758 - phase0 processHistoricalRootsUpdate 142.00 ns/op 133.00 ns/op 1.07
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1730 us/op 963.00 ns/op 1.22
mainnet_e58758 - phase0 afterProcessEpoch 34.245 ms/op 33.507 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0903 ms/op 1.0058 ms/op 1.08
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6246 ms/op 1.6825 ms/op 0.97
altair processInactivityUpdates - 250000 normalcase 11.178 ms/op 10.573 ms/op 1.06
altair processInactivityUpdates - 250000 worstcase 12.464 ms/op 12.083 ms/op 1.03
phase0 processRegistryUpdates - 250000 normalcase 2.4360 us/op 4.7570 us/op 0.51
phase0 processRegistryUpdates - 250000 badcase_full_deposits 148.34 us/op 297.00 us/op 0.50
phase0 processRegistryUpdates - 250000 worstcase 0.5 63.507 ms/op 59.115 ms/op 1.07
altair processRewardsAndPenalties - 250000 normalcase 17.309 ms/op 14.137 ms/op 1.22
altair processRewardsAndPenalties - 250000 worstcase 15.595 ms/op 15.446 ms/op 1.01
phase0 getAttestationDeltas - 250000 normalcase 5.5110 ms/op 5.4226 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 8.0112 ms/op 5.4500 ms/op 1.47
phase0 processSlashings - 250000 worstcase 62.245 us/op 59.030 us/op 1.05
altair processSyncCommitteeUpdates - 250000 11.403 ms/op 10.115 ms/op 1.13
BeaconState.hashTreeRoot - No change 180.00 ns/op 173.00 ns/op 1.04
BeaconState.hashTreeRoot - 1 full validator 88.602 us/op 58.213 us/op 1.52
BeaconState.hashTreeRoot - 32 full validator 884.38 us/op 756.78 us/op 1.17
BeaconState.hashTreeRoot - 512 full validator 9.2778 ms/op 6.0222 ms/op 1.54
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 109.38 us/op 69.959 us/op 1.56
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5794 ms/op 1.0763 ms/op 1.47
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.028 ms/op 12.732 ms/op 1.81
BeaconState.hashTreeRoot - 1 balances 84.664 us/op 64.838 us/op 1.31
BeaconState.hashTreeRoot - 32 balances 834.29 us/op 671.65 us/op 1.24
BeaconState.hashTreeRoot - 512 balances 7.8634 ms/op 4.7021 ms/op 1.67
BeaconState.hashTreeRoot - 250000 balances 148.15 ms/op 101.17 ms/op 1.46
aggregationBits - 2048 els - zipIndexesInBitList 21.420 us/op 19.615 us/op 1.09
regular array get 100000 times 23.184 us/op 23.158 us/op 1.00
wrappedArray get 100000 times 23.268 us/op 23.084 us/op 1.01
arrayWithProxy get 100000 times 17.977 ms/op 10.894 ms/op 1.65
ssz.Root.equals 75.012 ns/op 21.727 ns/op 3.45
byteArrayEquals 64.520 ns/op 21.551 ns/op 2.99
Buffer.compare 8.9050 ns/op 8.9360 ns/op 1.00
processSlot - 1 slots 11.527 us/op 8.1050 us/op 1.42
processSlot - 32 slots 2.3662 ms/op 1.5304 ms/op 1.55
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 4.9037 ms/op 2.7763 ms/op 1.77
getCommitteeAssignments - req 1 vs - 250000 vc 1.6960 ms/op 1.6845 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 3.4931 ms/op 3.4203 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7675 ms/op 3.6814 ms/op 1.02
findModifiedValidators - 10000 modified validators 800.20 ms/op 720.09 ms/op 1.11
findModifiedValidators - 1000 modified validators 583.07 ms/op 468.19 ms/op 1.25
findModifiedValidators - 100 modified validators 404.04 ms/op 294.29 ms/op 1.37
findModifiedValidators - 10 modified validators 233.32 ms/op 143.14 ms/op 1.63
findModifiedValidators - 1 modified validators 188.73 ms/op 164.30 ms/op 1.15
findModifiedValidators - no difference 223.55 ms/op 188.76 ms/op 1.18
migrate state 1500000 validators, 3400 modified, 2000 new 3.4326 s/op 3.0742 s/op 1.12
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.8300 ns/op 3.7700 ns/op 1.02
state getBlockRootAtSlot - 250000 vs - 7PWei 436.82 ns/op 323.84 ns/op 1.35
computeProposerIndex 100000 validators 1.3928 ms/op 1.3873 ms/op 1.00
getNextSyncCommitteeIndices 1000 validators 2.9452 ms/op 2.9093 ms/op 1.01
getNextSyncCommitteeIndices 10000 validators 25.938 ms/op 25.559 ms/op 1.01
getNextSyncCommitteeIndices 100000 validators 92.853 ms/op 84.163 ms/op 1.10
computeProposers - vc 250000 556.63 us/op 576.83 us/op 0.96
computeEpochShuffling - vc 250000 41.067 ms/op 40.482 ms/op 1.01
getNextSyncCommittee - vc 250000 10.065 ms/op 9.7329 ms/op 1.03
nodejs block root to RootHex using toHex 101.26 ns/op 99.209 ns/op 1.02
nodejs block root to RootHex using toRootHex 61.825 ns/op 65.524 ns/op 0.94
nodejs fromHex(blob) 800.08 us/op 752.54 us/op 1.06
nodejs fromHexInto(blob) 620.04 us/op 633.93 us/op 0.98
nodejs block root to RootHex using the deprecated toHexString 464.19 ns/op 490.01 ns/op 0.95
nodejs byteArrayEquals 32 bytes (block root) 26.088 ns/op 26.097 ns/op 1.00
nodejs byteArrayEquals 48 bytes (pubkey) 37.382 ns/op 37.674 ns/op 0.99
nodejs byteArrayEquals 96 bytes (signature) 33.842 ns/op 37.770 ns/op 0.90
nodejs byteArrayEquals 1024 bytes 41.573 ns/op 44.647 ns/op 0.93
nodejs byteArrayEquals 131072 bytes (blob) 1.7456 us/op 1.7585 us/op 0.99
browser block root to RootHex using toHex 143.53 ns/op 145.12 ns/op 0.99
browser block root to RootHex using toRootHex 131.96 ns/op 131.26 ns/op 1.01
browser fromHex(blob) 1.7294 ms/op 1.5483 ms/op 1.12
browser fromHexInto(blob) 637.81 us/op 630.27 us/op 1.01
browser block root to RootHex using the deprecated toHexString 327.62 ns/op 336.35 ns/op 0.97
browser byteArrayEquals 32 bytes (block root) 27.987 ns/op 28.096 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 39.545 ns/op 39.652 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 74.412 ns/op 74.416 ns/op 1.00
browser byteArrayEquals 1024 bytes 763.16 ns/op 756.36 ns/op 1.01
browser byteArrayEquals 131072 bytes (blob) 96.451 us/op 95.654 us/op 1.01

by benchmarkbot/action

@nflaig nflaig marked this pull request as ready for review July 10, 2026 19:53
@nflaig nflaig requested a review from a team as a code owner July 10, 2026 19:53
Comment thread AGENTS.md
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.

2 participants