这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@wemeetagain
Copy link
Member

Motivation

Saw this metric after holesky fusaka fork and was really confused
Screenshot from 2025-10-01 08-46-08

@wemeetagain wemeetagain requested a review from a team as a code owner October 1, 2025 12:50
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @wemeetagain, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refines the attribution of state regeneration calls within the beacon node's validation logic. By introducing a dedicated RegenCaller type for data column sidecar validation, the change aims to provide more granular and accurate tracking of these processes. This enhancement directly addresses observed confusion in metrics following the Holesky Fusaka fork, improving the clarity and debuggability of regeneration-related data.

Highlights

  • New RegenCaller Type: A new enum member, validateGossipDataColumn, has been added to the RegenCaller enum in interface.ts. This introduces a specific identifier for regeneration calls related to data column validation.
  • Updated Data Column Validation: The getBlockSlotState function call within dataColumnSidecar.ts has been updated to utilize the newly introduced RegenCaller.validateGossipDataColumn. This change refines the attribution of regeneration calls during the validation of data column sidecars, moving from a generic block validation caller to a more specific one.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

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

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 introduces a new RegenCaller enum member, validateGossipDataColumn, to specifically track state regenerations triggered during the validation of gossiped data column sidecars. This new enum value is then correctly applied in validateGossipDataColumnSidecar when calling getBlockSlotState. This change effectively addresses the confusing metrics issue by providing more precise context for state regeneration calls, distinguishing them from block validation. The changes are accurate, well-targeted, and improve observability.

@wemeetagain wemeetagain enabled auto-merge (squash) October 1, 2025 12:54
@wemeetagain wemeetagain merged commit 792fcea into unstable Oct 1, 2025
19 of 20 checks passed
@wemeetagain wemeetagain deleted the cayman/fix-regen-metric-label branch October 1, 2025 13:06
@codecov
Copy link

codecov bot commented Oct 1, 2025

Codecov Report

❌ Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 52.25%. Comparing base (fd1dac8) to head (d095906).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #8487   +/-   ##
=========================================
  Coverage     52.25%   52.25%           
=========================================
  Files           852      852           
  Lines         64977    64978    +1     
  Branches       4769     4768    -1     
=========================================
+ Hits          33953    33954    +1     
  Misses        30955    30955           
  Partials         69       69           
🚀 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.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 1, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 3c5e7b5 Previous: fd1dac8 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 954.31 us/op 1.0662 ms/op 0.90
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 34.259 us/op 38.561 us/op 0.89
BLS verify - blst 767.60 us/op 902.86 us/op 0.85
BLS verifyMultipleSignatures 3 - blst 1.1232 ms/op 1.2415 ms/op 0.90
BLS verifyMultipleSignatures 8 - blst 1.6008 ms/op 1.8941 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst 4.7913 ms/op 5.7637 ms/op 0.83
BLS verifyMultipleSignatures 64 - blst 8.8932 ms/op 11.057 ms/op 0.80
BLS verifyMultipleSignatures 128 - blst 16.966 ms/op 17.439 ms/op 0.97
BLS deserializing 10000 signatures 683.18 ms/op 695.12 ms/op 0.98
BLS deserializing 100000 signatures 6.8171 s/op 6.9975 s/op 0.97
BLS verifyMultipleSignatures - same message - 3 - blst 800.51 us/op 1.0628 ms/op 0.75
BLS verifyMultipleSignatures - same message - 8 - blst 978.27 us/op 1.1691 ms/op 0.84
BLS verifyMultipleSignatures - same message - 32 - blst 1.6151 ms/op 1.6327 ms/op 0.99
BLS verifyMultipleSignatures - same message - 64 - blst 2.4995 ms/op 2.4298 ms/op 1.03
BLS verifyMultipleSignatures - same message - 128 - blst 5.1714 ms/op 4.1938 ms/op 1.23
BLS aggregatePubkeys 32 - blst 18.944 us/op 19.199 us/op 0.99
BLS aggregatePubkeys 128 - blst 66.941 us/op 68.544 us/op 0.98
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 46.359 ms/op 56.227 ms/op 0.82
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 42.101 ms/op 58.601 ms/op 0.72
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 36.608 ms/op 44.502 ms/op 0.82
getSlashingsAndExits - default max 72.012 us/op 74.028 us/op 0.97
getSlashingsAndExits - 2k 318.93 us/op 335.50 us/op 0.95
isKnown best case - 1 super set check 202.00 ns/op 212.00 ns/op 0.95
isKnown normal case - 2 super set checks 202.00 ns/op 208.00 ns/op 0.97
isKnown worse case - 16 super set checks 199.00 ns/op 209.00 ns/op 0.95
InMemoryCheckpointStateCache - add get delete 2.4380 us/op 2.4910 us/op 0.98
validate api signedAggregateAndProof - struct 1.4879 ms/op 1.4591 ms/op 1.02
validate gossip signedAggregateAndProof - struct 1.4439 ms/op 2.0151 ms/op 0.72
batch validate gossip attestation - vc 640000 - chunk 32 114.59 us/op 118.91 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 64 101.33 us/op 103.48 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 128 96.294 us/op 96.822 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 256 99.852 us/op 94.925 us/op 1.05
pickEth1Vote - no votes 949.71 us/op 987.62 us/op 0.96
pickEth1Vote - max votes 6.4515 ms/op 5.4956 ms/op 1.17
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.325 ms/op 10.402 ms/op 1.09
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.134 ms/op 14.310 ms/op 1.13
pickEth1Vote - Eth1Data fastSerialize value x2048 419.53 us/op 472.72 us/op 0.89
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.1730 ms/op 2.2609 ms/op 0.96
bytes32 toHexString 358.00 ns/op 371.00 ns/op 0.96
bytes32 Buffer.toString(hex) 248.00 ns/op 254.00 ns/op 0.98
bytes32 Buffer.toString(hex) from Uint8Array 344.00 ns/op 346.00 ns/op 0.99
bytes32 Buffer.toString(hex) + 0x 247.00 ns/op 256.00 ns/op 0.96
Object access 1 prop 0.11600 ns/op 0.11600 ns/op 1.00
Map access 1 prop 0.12000 ns/op 0.12000 ns/op 1.00
Object get x1000 5.8030 ns/op 5.9950 ns/op 0.97
Map get x1000 6.3800 ns/op 6.4410 ns/op 0.99
Object set x1000 29.485 ns/op 27.310 ns/op 1.08
Map set x1000 19.694 ns/op 18.817 ns/op 1.05
Return object 10000 times 0.28390 ns/op 0.27370 ns/op 1.04
Throw Error 10000 times 4.3255 us/op 4.1490 us/op 1.04
toHex 140.77 ns/op 133.34 ns/op 1.06
Buffer.from 133.69 ns/op 117.76 ns/op 1.14
shared Buffer 81.957 ns/op 81.735 ns/op 1.00
fastMsgIdFn sha256 / 200 bytes 2.1480 us/op 2.2310 us/op 0.96
fastMsgIdFn h32 xxhash / 200 bytes 209.00 ns/op 203.00 ns/op 1.03
fastMsgIdFn h64 xxhash / 200 bytes 270.00 ns/op 270.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 7.1000 us/op 7.4120 us/op 0.96
fastMsgIdFn h32 xxhash / 1000 bytes 337.00 ns/op 347.00 ns/op 0.97
fastMsgIdFn h64 xxhash / 1000 bytes 340.00 ns/op 332.00 ns/op 1.02
fastMsgIdFn sha256 / 10000 bytes 63.695 us/op 63.503 us/op 1.00
fastMsgIdFn h32 xxhash / 10000 bytes 1.7990 us/op 1.8400 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.1900 us/op 1.2250 us/op 0.97
send data - 1000 256B messages 17.511 ms/op 14.946 ms/op 1.17
send data - 1000 512B messages 20.971 ms/op 18.284 ms/op 1.15
send data - 1000 1024B messages 28.321 ms/op 26.014 ms/op 1.09
send data - 1000 1200B messages 23.735 ms/op 20.990 ms/op 1.13
send data - 1000 2048B messages 24.474 ms/op 22.200 ms/op 1.10
send data - 1000 4096B messages 27.831 ms/op 24.920 ms/op 1.12
send data - 1000 16384B messages 46.064 ms/op 42.278 ms/op 1.09
send data - 1000 65536B messages 121.91 ms/op 113.38 ms/op 1.08
enrSubnets - fastDeserialize 64 bits 880.00 ns/op 886.00 ns/op 0.99
enrSubnets - ssz BitVector 64 bits 339.00 ns/op 335.00 ns/op 1.01
enrSubnets - fastDeserialize 4 bits 131.00 ns/op 147.00 ns/op 0.89
enrSubnets - ssz BitVector 4 bits 326.00 ns/op 338.00 ns/op 0.96
prioritizePeers score -10:0 att 32-0.1 sync 2-0 229.51 us/op 235.86 us/op 0.97
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 256.12 us/op 260.76 us/op 0.98
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 366.92 us/op 376.81 us/op 0.97
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 695.17 us/op 693.04 us/op 1.00
prioritizePeers score 0:0 att 64-1 sync 4-1 837.32 us/op 844.85 us/op 0.99
array of 16000 items push then shift 1.5703 us/op 1.6090 us/op 0.98
LinkedList of 16000 items push then shift 7.4540 ns/op 7.7250 ns/op 0.96
array of 16000 items push then pop 76.386 ns/op 75.174 ns/op 1.02
LinkedList of 16000 items push then pop 7.2990 ns/op 7.4900 ns/op 0.97
array of 24000 items push then shift 2.3706 us/op 2.3674 us/op 1.00
LinkedList of 24000 items push then shift 7.4730 ns/op 7.5460 ns/op 0.99
array of 24000 items push then pop 101.96 ns/op 103.00 ns/op 0.99
LinkedList of 24000 items push then pop 7.2090 ns/op 7.3870 ns/op 0.98
intersect bitArray bitLen 8 6.2510 ns/op 6.2790 ns/op 1.00
intersect array and set length 8 37.122 ns/op 37.540 ns/op 0.99
intersect bitArray bitLen 128 29.178 ns/op 29.389 ns/op 0.99
intersect array and set length 128 611.19 ns/op 618.25 ns/op 0.99
bitArray.getTrueBitIndexes() bitLen 128 978.00 ns/op 995.00 ns/op 0.98
bitArray.getTrueBitIndexes() bitLen 248 1.7620 us/op 1.7490 us/op 1.01
bitArray.getTrueBitIndexes() bitLen 512 3.6750 us/op 3.5920 us/op 1.02
Buffer.concat 32 items 594.00 ns/op 598.00 ns/op 0.99
Uint8Array.set 32 items 890.00 ns/op 1.1630 us/op 0.77
Buffer.copy 2.0610 us/op 2.0250 us/op 1.02
Uint8Array.set - with subarray 1.6260 us/op 1.5610 us/op 1.04
Uint8Array.set - without subarray 870.00 ns/op 902.00 ns/op 0.96
getUint32 - dataview 197.00 ns/op 194.00 ns/op 1.02
getUint32 - manual 117.00 ns/op 129.00 ns/op 0.91
Set add up to 64 items then delete first 2.2330 us/op 2.1894 us/op 1.02
OrderedSet add up to 64 items then delete first 3.3872 us/op 3.4365 us/op 0.99
Set add up to 64 items then delete last 2.4910 us/op 2.5954 us/op 0.96
OrderedSet add up to 64 items then delete last 3.7306 us/op 3.8191 us/op 0.98
Set add up to 64 items then delete middle 2.5310 us/op 2.3807 us/op 1.06
OrderedSet add up to 64 items then delete middle 5.6776 us/op 5.3806 us/op 1.06
Set add up to 128 items then delete first 5.5805 us/op 5.1158 us/op 1.09
OrderedSet add up to 128 items then delete first 11.804 us/op 8.2420 us/op 1.43
Set add up to 128 items then delete last 5.8867 us/op 5.3029 us/op 1.11
OrderedSet add up to 128 items then delete last 8.2515 us/op 7.5755 us/op 1.09
Set add up to 128 items then delete middle 6.0297 us/op 5.0141 us/op 1.20
OrderedSet add up to 128 items then delete middle 15.076 us/op 15.299 us/op 0.99
Set add up to 256 items then delete first 10.813 us/op 11.375 us/op 0.95
OrderedSet add up to 256 items then delete first 17.765 us/op 15.950 us/op 1.11
Set add up to 256 items then delete last 10.353 us/op 9.6662 us/op 1.07
OrderedSet add up to 256 items then delete last 15.589 us/op 15.247 us/op 1.02
Set add up to 256 items then delete middle 9.7470 us/op 9.5585 us/op 1.02
OrderedSet add up to 256 items then delete middle 42.308 us/op 41.471 us/op 1.02
transfer serialized Status (84 B) 2.1860 us/op 2.2150 us/op 0.99
copy serialized Status (84 B) 1.1130 us/op 1.2150 us/op 0.92
transfer serialized SignedVoluntaryExit (112 B) 2.2300 us/op 2.1990 us/op 1.01
copy serialized SignedVoluntaryExit (112 B) 1.1170 us/op 1.2000 us/op 0.93
transfer serialized ProposerSlashing (416 B) 2.2620 us/op 2.2550 us/op 1.00
copy serialized ProposerSlashing (416 B) 1.2640 us/op 1.2300 us/op 1.03
transfer serialized Attestation (485 B) 3.3770 us/op 2.2570 us/op 1.50
copy serialized Attestation (485 B) 1.4580 us/op 1.2150 us/op 1.20
transfer serialized AttesterSlashing (33232 B) 2.5010 us/op 2.5990 us/op 0.96
copy serialized AttesterSlashing (33232 B) 3.4580 us/op 3.5750 us/op 0.97
transfer serialized Small SignedBeaconBlock (128000 B) 3.3810 us/op 3.3300 us/op 1.02
copy serialized Small SignedBeaconBlock (128000 B) 14.798 us/op 10.839 us/op 1.37
transfer serialized Avg SignedBeaconBlock (200000 B) 3.8050 us/op 4.0090 us/op 0.95
copy serialized Avg SignedBeaconBlock (200000 B) 14.678 us/op 14.217 us/op 1.03
transfer serialized BlobsSidecar (524380 B) 3.5130 us/op 3.8390 us/op 0.92
copy serialized BlobsSidecar (524380 B) 175.44 us/op 60.542 us/op 2.90
transfer serialized Big SignedBeaconBlock (1000000 B) 3.7180 us/op 4.2150 us/op 0.88
copy serialized Big SignedBeaconBlock (1000000 B) 188.63 us/op 164.08 us/op 1.15
pass gossip attestations to forkchoice per slot 2.7123 ms/op 2.8144 ms/op 0.96
forkChoice updateHead vc 100000 bc 64 eq 0 453.48 us/op 459.93 us/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 0 2.8753 ms/op 2.9248 ms/op 0.98
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7278 ms/op 5.0888 ms/op 0.93
forkChoice updateHead vc 600000 bc 320 eq 0 2.7954 ms/op 2.9369 ms/op 0.95
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8242 ms/op 2.8440 ms/op 0.99
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0411 ms/op 3.2198 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 1000 10.227 ms/op 10.444 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 10000 10.215 ms/op 10.664 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 13.512 ms/op 13.405 ms/op 1.01
computeDeltas 500000 validators 300 proto nodes 3.8851 ms/op 4.0138 ms/op 0.97
computeDeltas 500000 validators 1200 proto nodes 3.8006 ms/op 4.1578 ms/op 0.91
computeDeltas 500000 validators 7200 proto nodes 3.8545 ms/op 4.0724 ms/op 0.95
computeDeltas 750000 validators 300 proto nodes 5.6652 ms/op 5.7814 ms/op 0.98
computeDeltas 750000 validators 1200 proto nodes 5.7295 ms/op 5.7594 ms/op 0.99
computeDeltas 750000 validators 7200 proto nodes 5.7654 ms/op 5.6965 ms/op 1.01
computeDeltas 1400000 validators 300 proto nodes 10.897 ms/op 10.755 ms/op 1.01
computeDeltas 1400000 validators 1200 proto nodes 10.963 ms/op 11.064 ms/op 0.99
computeDeltas 1400000 validators 7200 proto nodes 10.815 ms/op 11.216 ms/op 0.96
computeDeltas 2100000 validators 300 proto nodes 16.238 ms/op 16.811 ms/op 0.97
computeDeltas 2100000 validators 1200 proto nodes 16.074 ms/op 16.985 ms/op 0.95
computeDeltas 2100000 validators 7200 proto nodes 16.634 ms/op 16.903 ms/op 0.98
altair processAttestation - 250000 vs - 7PWei normalcase 2.0028 ms/op 2.0021 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei worstcase 2.9805 ms/op 2.9434 ms/op 1.01
altair processAttestation - setStatus - 1/6 committees join 135.37 us/op 123.69 us/op 1.09
altair processAttestation - setStatus - 1/3 committees join 258.49 us/op 245.29 us/op 1.05
altair processAttestation - setStatus - 1/2 committees join 335.34 us/op 342.09 us/op 0.98
altair processAttestation - setStatus - 2/3 committees join 460.35 us/op 440.70 us/op 1.04
altair processAttestation - setStatus - 4/5 committees join 616.32 us/op 605.49 us/op 1.02
altair processAttestation - setStatus - 100% committees join 714.91 us/op 737.87 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 4.3311 ms/op 5.0933 ms/op 0.85
altair processBlock - 250000 vs - 7PWei normalcase hashState 28.791 ms/op 31.955 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase 33.794 ms/op 39.444 ms/op 0.86
altair processBlock - 250000 vs - 7PWei worstcase hashState 71.239 ms/op 77.289 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5914 ms/op 2.2261 ms/op 0.71
phase0 processBlock - 250000 vs - 7PWei worstcase 20.146 ms/op 26.252 ms/op 0.77
altair processEth1Data - 250000 vs - 7PWei normalcase 364.96 us/op 334.13 us/op 1.09
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.2290 us/op 6.1360 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 39.213 us/op 38.500 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.654 us/op 11.060 us/op 0.96
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.8490 us/op 6.4270 us/op 1.07
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 162.94 us/op 205.77 us/op 0.79
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.8973 ms/op 2.1731 ms/op 0.87
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4711 ms/op 2.3647 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 4.3956 ms/op 2.4096 ms/op 1.82
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.9292 ms/op 4.6926 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4625 ms/op 2.4017 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.9070 ms/op 4.6017 ms/op 1.07
Tree 40 250000 create 424.01 ms/op 458.52 ms/op 0.92
Tree 40 250000 get(125000) 140.53 ns/op 148.15 ns/op 0.95
Tree 40 250000 set(125000) 1.6808 us/op 1.5826 us/op 1.06
Tree 40 250000 toArray() 19.852 ms/op 20.544 ms/op 0.97
Tree 40 250000 iterate all - toArray() + loop 18.530 ms/op 16.277 ms/op 1.14
Tree 40 250000 iterate all - get(i) 56.171 ms/op 52.193 ms/op 1.08
Array 250000 create 4.1041 ms/op 2.7660 ms/op 1.48
Array 250000 clone - spread 832.44 us/op 828.38 us/op 1.00
Array 250000 get(125000) 0.42000 ns/op 0.44400 ns/op 0.95
Array 250000 set(125000) 0.44300 ns/op 0.43300 ns/op 1.02
Array 250000 iterate all - loop 109.70 us/op 81.782 us/op 1.34
phase0 afterProcessEpoch - 250000 vs - 7PWei 42.601 ms/op 40.305 ms/op 1.06
Array.fill - length 1000000 3.9760 ms/op 3.5838 ms/op 1.11
Array push - length 1000000 13.373 ms/op 12.877 ms/op 1.04
Array.get 0.27250 ns/op 0.27243 ns/op 1.00
Uint8Array.get 0.44156 ns/op 0.44562 ns/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 17.491 ms/op 16.158 ms/op 1.08
altair processEpoch - mainnet_e81889 269.71 ms/op 247.07 ms/op 1.09
mainnet_e81889 - altair beforeProcessEpoch 17.358 ms/op 16.792 ms/op 1.03
mainnet_e81889 - altair processJustificationAndFinalization 5.4200 us/op 8.5440 us/op 0.63
mainnet_e81889 - altair processInactivityUpdates 4.3047 ms/op 4.0978 ms/op 1.05
mainnet_e81889 - altair processRewardsAndPenalties 40.823 ms/op 35.251 ms/op 1.16
mainnet_e81889 - altair processRegistryUpdates 702.00 ns/op 709.00 ns/op 0.99
mainnet_e81889 - altair processSlashings 179.00 ns/op 190.00 ns/op 0.94
mainnet_e81889 - altair processEth1DataReset 172.00 ns/op 173.00 ns/op 0.99
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1867 ms/op 1.1794 ms/op 1.01
mainnet_e81889 - altair processSlashingsReset 862.00 ns/op 984.00 ns/op 0.88
mainnet_e81889 - altair processRandaoMixesReset 1.1200 us/op 1.1830 us/op 0.95
mainnet_e81889 - altair processHistoricalRootsUpdate 175.00 ns/op 175.00 ns/op 1.00
mainnet_e81889 - altair processParticipationFlagUpdates 511.00 ns/op 583.00 ns/op 0.88
mainnet_e81889 - altair processSyncCommitteeUpdates 140.00 ns/op 140.00 ns/op 1.00
mainnet_e81889 - altair afterProcessEpoch 43.847 ms/op 43.426 ms/op 1.01
capella processEpoch - mainnet_e217614 821.24 ms/op 1.0017 s/op 0.82
mainnet_e217614 - capella beforeProcessEpoch 61.905 ms/op 64.539 ms/op 0.96
mainnet_e217614 - capella processJustificationAndFinalization 5.2500 us/op 5.6210 us/op 0.93
mainnet_e217614 - capella processInactivityUpdates 14.158 ms/op 14.742 ms/op 0.96
mainnet_e217614 - capella processRewardsAndPenalties 191.11 ms/op 201.16 ms/op 0.95
mainnet_e217614 - capella processRegistryUpdates 6.5810 us/op 10.368 us/op 0.63
mainnet_e217614 - capella processSlashings 177.00 ns/op 180.00 ns/op 0.98
mainnet_e217614 - capella processEth1DataReset 221.00 ns/op 176.00 ns/op 1.26
mainnet_e217614 - capella processEffectiveBalanceUpdates 14.259 ms/op 10.248 ms/op 1.39
mainnet_e217614 - capella processSlashingsReset 877.00 ns/op 1.0710 us/op 0.82
mainnet_e217614 - capella processRandaoMixesReset 1.1310 us/op 1.4940 us/op 0.76
mainnet_e217614 - capella processHistoricalRootsUpdate 176.00 ns/op 201.00 ns/op 0.88
mainnet_e217614 - capella processParticipationFlagUpdates 532.00 ns/op 571.00 ns/op 0.93
mainnet_e217614 - capella afterProcessEpoch 114.40 ms/op 114.79 ms/op 1.00
phase0 processEpoch - mainnet_e58758 257.63 ms/op 284.24 ms/op 0.91
mainnet_e58758 - phase0 beforeProcessEpoch 68.990 ms/op 77.757 ms/op 0.89
mainnet_e58758 - phase0 processJustificationAndFinalization 5.3390 us/op 7.0810 us/op 0.75
mainnet_e58758 - phase0 processRewardsAndPenalties 34.261 ms/op 40.833 ms/op 0.84
mainnet_e58758 - phase0 processRegistryUpdates 3.1600 us/op 3.6530 us/op 0.87
mainnet_e58758 - phase0 processSlashings 174.00 ns/op 182.00 ns/op 0.96
mainnet_e58758 - phase0 processEth1DataReset 173.00 ns/op 186.00 ns/op 0.93
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1667 ms/op 1.2080 ms/op 0.97
mainnet_e58758 - phase0 processSlashingsReset 958.00 ns/op 973.00 ns/op 0.98
mainnet_e58758 - phase0 processRandaoMixesReset 1.1820 us/op 1.4750 us/op 0.80
mainnet_e58758 - phase0 processHistoricalRootsUpdate 175.00 ns/op 178.00 ns/op 0.98
mainnet_e58758 - phase0 processParticipationRecordUpdates 896.00 ns/op 881.00 ns/op 1.02
mainnet_e58758 - phase0 afterProcessEpoch 49.184 ms/op 35.376 ms/op 1.39
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3268 ms/op 1.3042 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.0636 ms/op 2.1785 ms/op 0.95
altair processInactivityUpdates - 250000 normalcase 17.999 ms/op 17.897 ms/op 1.01
altair processInactivityUpdates - 250000 worstcase 18.000 ms/op 19.996 ms/op 0.90
phase0 processRegistryUpdates - 250000 normalcase 6.6350 us/op 10.600 us/op 0.63
phase0 processRegistryUpdates - 250000 badcase_full_deposits 285.80 us/op 429.84 us/op 0.66
phase0 processRegistryUpdates - 250000 worstcase 0.5 95.366 ms/op 125.87 ms/op 0.76
altair processRewardsAndPenalties - 250000 normalcase 27.190 ms/op 34.321 ms/op 0.79
altair processRewardsAndPenalties - 250000 worstcase 24.978 ms/op 31.622 ms/op 0.79
phase0 getAttestationDeltas - 250000 normalcase 7.4649 ms/op 6.9250 ms/op 1.08
phase0 getAttestationDeltas - 250000 worstcase 7.4578 ms/op 6.2797 ms/op 1.19
phase0 processSlashings - 250000 worstcase 102.42 us/op 124.45 us/op 0.82
altair processSyncCommitteeUpdates - 250000 11.012 ms/op 10.223 ms/op 1.08
BeaconState.hashTreeRoot - No change 215.00 ns/op 217.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 72.516 us/op 85.864 us/op 0.84
BeaconState.hashTreeRoot - 32 full validator 749.86 us/op 1.4027 ms/op 0.53
BeaconState.hashTreeRoot - 512 full validator 8.7342 ms/op 9.5426 ms/op 0.92
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 88.522 us/op 121.42 us/op 0.73
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2399 ms/op 2.0201 ms/op 0.61
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.999 ms/op 24.729 ms/op 0.73
BeaconState.hashTreeRoot - 1 balances 68.895 us/op 80.247 us/op 0.86
BeaconState.hashTreeRoot - 32 balances 646.58 us/op 1.3063 ms/op 0.49
BeaconState.hashTreeRoot - 512 balances 6.7347 ms/op 8.4872 ms/op 0.79
BeaconState.hashTreeRoot - 250000 balances 138.38 ms/op 202.37 ms/op 0.68
aggregationBits - 2048 els - zipIndexesInBitList 21.251 us/op 21.017 us/op 1.01
byteArrayEquals 32 52.961 ns/op 52.198 ns/op 1.01
Buffer.compare 32 17.193 ns/op 18.686 ns/op 0.92
byteArrayEquals 1024 1.5810 us/op 1.5822 us/op 1.00
Buffer.compare 1024 24.755 ns/op 27.083 ns/op 0.91
byteArrayEquals 16384 25.139 us/op 25.185 us/op 1.00
Buffer.compare 16384 188.99 ns/op 206.97 ns/op 0.91
byteArrayEquals 123687377 188.63 ms/op 190.88 ms/op 0.99
Buffer.compare 123687377 6.4488 ms/op 6.6799 ms/op 0.97
byteArrayEquals 32 - diff last byte 51.867 ns/op 52.627 ns/op 0.99
Buffer.compare 32 - diff last byte 16.743 ns/op 17.010 ns/op 0.98
byteArrayEquals 1024 - diff last byte 1.5615 us/op 1.5914 us/op 0.98
Buffer.compare 1024 - diff last byte 25.384 ns/op 26.107 ns/op 0.97
byteArrayEquals 16384 - diff last byte 24.922 us/op 25.440 us/op 0.98
Buffer.compare 16384 - diff last byte 184.39 ns/op 186.57 ns/op 0.99
byteArrayEquals 123687377 - diff last byte 189.16 ms/op 192.21 ms/op 0.98
Buffer.compare 123687377 - diff last byte 6.4123 ms/op 6.8685 ms/op 0.93
byteArrayEquals 32 - random bytes 5.0510 ns/op 5.1550 ns/op 0.98
Buffer.compare 32 - random bytes 16.771 ns/op 17.481 ns/op 0.96
byteArrayEquals 1024 - random bytes 5.0330 ns/op 5.1540 ns/op 0.98
Buffer.compare 1024 - random bytes 17.021 ns/op 17.486 ns/op 0.97
byteArrayEquals 16384 - random bytes 5.0880 ns/op 5.1510 ns/op 0.99
Buffer.compare 16384 - random bytes 17.093 ns/op 17.479 ns/op 0.98
byteArrayEquals 123687377 - random bytes 6.7800 ns/op 6.5300 ns/op 1.04
Buffer.compare 123687377 - random bytes 18.280 ns/op 18.830 ns/op 0.97
regular array get 100000 times 39.706 us/op 33.257 us/op 1.19
wrappedArray get 100000 times 32.662 us/op 33.145 us/op 0.99
arrayWithProxy get 100000 times 12.250 ms/op 17.648 ms/op 0.69
ssz.Root.equals 45.565 ns/op 46.909 ns/op 0.97
byteArrayEquals 44.521 ns/op 45.753 ns/op 0.97
Buffer.compare 10.105 ns/op 10.432 ns/op 0.97
processSlot - 1 slots 10.171 us/op 11.300 us/op 0.90
processSlot - 32 slots 3.4839 ms/op 2.9371 ms/op 1.19
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.9699 ms/op 3.0591 ms/op 0.97
getCommitteeAssignments - req 1 vs - 250000 vc 2.1205 ms/op 2.1572 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 4.0911 ms/op 4.1780 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3491 ms/op 4.4344 ms/op 0.98
findModifiedValidators - 10000 modified validators 746.77 ms/op 749.99 ms/op 1.00
findModifiedValidators - 1000 modified validators 736.64 ms/op 701.51 ms/op 1.05
findModifiedValidators - 100 modified validators 270.69 ms/op 242.07 ms/op 1.12
findModifiedValidators - 10 modified validators 155.26 ms/op 243.51 ms/op 0.64
findModifiedValidators - 1 modified validators 200.52 ms/op 235.71 ms/op 0.85
findModifiedValidators - no difference 254.95 ms/op 236.65 ms/op 1.08
compare ViewDUs 6.4215 s/op 6.0393 s/op 1.06
compare each validator Uint8Array 1.4043 s/op 1.3040 s/op 1.08
compare ViewDU to Uint8Array 1.3331 s/op 982.14 ms/op 1.36
migrate state 1000000 validators, 24 modified, 0 new 887.99 ms/op 790.90 ms/op 1.12
migrate state 1000000 validators, 1700 modified, 1000 new 1.1558 s/op 1.2176 s/op 0.95
migrate state 1000000 validators, 3400 modified, 2000 new 1.3441 s/op 1.3119 s/op 1.02
migrate state 1500000 validators, 24 modified, 0 new 785.89 ms/op 958.84 ms/op 0.82
migrate state 1500000 validators, 1700 modified, 1000 new 1.0712 s/op 1.2082 s/op 0.89
migrate state 1500000 validators, 3400 modified, 2000 new 1.1512 s/op 1.2387 s/op 0.93
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1200 ns/op 4.9000 ns/op 0.84
state getBlockRootAtSlot - 250000 vs - 7PWei 583.76 ns/op 479.40 ns/op 1.22
naive computeProposerIndex 100000 validators 50.393 ms/op 53.386 ms/op 0.94
computeProposerIndex 100000 validators 1.4784 ms/op 1.4885 ms/op 0.99
naiveGetNextSyncCommitteeIndices 1000 validators 7.6174 s/op 7.4557 s/op 1.02
getNextSyncCommitteeIndices 1000 validators 113.95 ms/op 112.57 ms/op 1.01
naiveGetNextSyncCommitteeIndices 10000 validators 7.6563 s/op 9.8263 s/op 0.78
getNextSyncCommitteeIndices 10000 validators 112.54 ms/op 129.26 ms/op 0.87
naiveGetNextSyncCommitteeIndices 100000 validators 7.7947 s/op 9.7070 s/op 0.80
getNextSyncCommitteeIndices 100000 validators 113.47 ms/op 143.16 ms/op 0.79
naive computeShuffledIndex 100000 validators 26.205 s/op 31.412 s/op 0.83
cached computeShuffledIndex 100000 validators 545.40 ms/op 607.53 ms/op 0.90
naive computeShuffledIndex 2000000 validators 519.56 s/op 474.34 s/op 1.10
cached computeShuffledIndex 2000000 validators 44.116 s/op 28.058 s/op 1.57
computeProposers - vc 250000 630.91 us/op 611.98 us/op 1.03
computeEpochShuffling - vc 250000 42.688 ms/op 40.737 ms/op 1.05
getNextSyncCommittee - vc 250000 10.718 ms/op 10.345 ms/op 1.04
computeSigningRoot for AttestationData 21.637 us/op 19.919 us/op 1.09
hash AttestationData serialized data then Buffer.toString(base64) 1.6520 us/op 1.5804 us/op 1.05
toHexString serialized data 1.3012 us/op 1.0688 us/op 1.22
Buffer.toString(base64) 162.49 ns/op 156.16 ns/op 1.04
nodejs block root to RootHex using toHex 150.72 ns/op 151.70 ns/op 0.99
nodejs block root to RootHex using toRootHex 88.782 ns/op 86.604 ns/op 1.03
nodejs fromhex(blob) 113.34 ms/op 103.74 ms/op 1.09
nodejs fromHexInto(blob) 94.258 ms/op 90.621 ms/op 1.04
browser block root to RootHex using the deprecated toHexString 217.85 ns/op 202.57 ns/op 1.08
browser block root to RootHex using toHex 176.25 ns/op 163.80 ns/op 1.08
browser block root to RootHex using toRootHex 163.82 ns/op 154.13 ns/op 1.06
browser fromHexInto(blob) 820.05 us/op 790.11 us/op 1.04
browser fromHex(blob) 800.85 ms/op 752.28 ms/op 1.06

by benchmarkbot/action

@wemeetagain
Copy link
Member Author

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