Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Nov 26, 2025

Updates Test Current File launch config to work with vitest 4 (updated in #8599).

@nflaig nflaig requested a review from a team as a code owner November 26, 2025 19:24
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @nflaig, 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 addresses an incompatibility issue with the VS Code 'Test Current File' launch configuration following an upgrade to Vitest 4. By modifying the test runner arguments, it ensures that developers can continue to effectively debug individual test files within the integrated development environment.

Highlights

  • VS Code Launch Configuration Update: The Test Current File launch configuration in .vscode/launch.template.json has been updated.
  • Vitest 4 Compatibility: The launch arguments for Vitest have been adjusted to ensure compatibility with Vitest 4, specifically replacing --poolOptions.forks.singleFork with --maxWorkers 1 --isolate true.
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 updates the 'Test Current File' launch configuration to be compatible with Vitest v4 by replacing the deprecated --poolOptions.forks.singleFork flag with --maxWorkers and --isolate. The change is correct and aligns with the new Vitest CLI options. I've added one suggestion to simplify the configuration by removing a redundant argument.

@nflaig nflaig requested a review from nazarhussain November 26, 2025 19:25
@github-actions
Copy link
Contributor

github-actions bot commented Nov 26, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 9f43d2a Previous: c2cf1aa Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 927.05 us/op 907.82 us/op 1.02
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.244 us/op 36.356 us/op 1.02
BLS verify - blst 862.66 us/op 832.45 us/op 1.04
BLS verifyMultipleSignatures 3 - blst 1.2135 ms/op 1.2515 ms/op 0.97
BLS verifyMultipleSignatures 8 - blst 1.6643 ms/op 1.6462 ms/op 1.01
BLS verifyMultipleSignatures 32 - blst 4.9946 ms/op 4.8355 ms/op 1.03
BLS verifyMultipleSignatures 64 - blst 9.3345 ms/op 9.0347 ms/op 1.03
BLS verifyMultipleSignatures 128 - blst 17.361 ms/op 17.139 ms/op 1.01
BLS deserializing 10000 signatures 703.46 ms/op 684.29 ms/op 1.03
BLS deserializing 100000 signatures 7.0027 s/op 6.8822 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst 920.95 us/op 1.0426 ms/op 0.88
BLS verifyMultipleSignatures - same message - 8 - blst 1.0631 ms/op 1.2079 ms/op 0.88
BLS verifyMultipleSignatures - same message - 32 - blst 1.7610 ms/op 1.8062 ms/op 0.97
BLS verifyMultipleSignatures - same message - 64 - blst 2.6186 ms/op 2.7292 ms/op 0.96
BLS verifyMultipleSignatures - same message - 128 - blst 4.4050 ms/op 4.8239 ms/op 0.91
BLS aggregatePubkeys 32 - blst 19.636 us/op 19.697 us/op 1.00
BLS aggregatePubkeys 128 - blst 70.138 us/op 70.689 us/op 0.99
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 49.692 ms/op 51.189 ms/op 0.97
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 42.666 ms/op 45.478 ms/op 0.94
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 35.217 ms/op 38.862 ms/op 0.91
getSlashingsAndExits - default max 72.902 us/op 78.210 us/op 0.93
getSlashingsAndExits - 2k 290.57 us/op 384.97 us/op 0.75
isKnown best case - 1 super set check 210.00 ns/op 199.00 ns/op 1.06
isKnown normal case - 2 super set checks 207.00 ns/op 199.00 ns/op 1.04
isKnown worse case - 16 super set checks 206.00 ns/op 200.00 ns/op 1.03
InMemoryCheckpointStateCache - add get delete 2.4360 us/op 2.3590 us/op 1.03
validate api signedAggregateAndProof - struct 1.3886 ms/op 1.4419 ms/op 0.96
validate gossip signedAggregateAndProof - struct 1.4044 ms/op 1.4451 ms/op 0.97
batch validate gossip attestation - vc 640000 - chunk 32 116.20 us/op 114.82 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 103.00 us/op 101.21 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 128 97.572 us/op 100.29 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 256 97.319 us/op 105.62 us/op 0.92
pickEth1Vote - no votes 952.90 us/op 994.63 us/op 0.96
pickEth1Vote - max votes 5.2166 ms/op 10.356 ms/op 0.50
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.338 ms/op 14.741 ms/op 0.77
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 15.536 ms/op 24.588 ms/op 0.63
pickEth1Vote - Eth1Data fastSerialize value x2048 451.82 us/op 408.85 us/op 1.11
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2879 ms/op 4.2338 ms/op 0.54
bytes32 toHexString 360.00 ns/op 361.00 ns/op 1.00
bytes32 Buffer.toString(hex) 249.00 ns/op 319.00 ns/op 0.78
bytes32 Buffer.toString(hex) from Uint8Array 340.00 ns/op 330.00 ns/op 1.03
bytes32 Buffer.toString(hex) + 0x 253.00 ns/op 244.00 ns/op 1.04
Object access 1 prop 0.12000 ns/op 0.11800 ns/op 1.02
Map access 1 prop 0.12500 ns/op 0.12200 ns/op 1.02
Object get x1000 5.7140 ns/op 5.9580 ns/op 0.96
Map get x1000 6.2830 ns/op 6.3500 ns/op 0.99
Object set x1000 28.639 ns/op 33.756 ns/op 0.85
Map set x1000 19.773 ns/op 21.668 ns/op 0.91
Return object 10000 times 0.29610 ns/op 0.29290 ns/op 1.01
Throw Error 10000 times 4.5571 us/op 4.4087 us/op 1.03
toHex 140.16 ns/op 154.94 ns/op 0.90
Buffer.from 126.86 ns/op 139.85 ns/op 0.91
shared Buffer 89.622 ns/op 83.384 ns/op 1.07
fastMsgIdFn sha256 / 200 bytes 2.2250 us/op 2.1960 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 205.00 ns/op 202.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 200 bytes 270.00 ns/op 260.00 ns/op 1.04
fastMsgIdFn sha256 / 1000 bytes 7.3250 us/op 7.1770 us/op 1.02
fastMsgIdFn h32 xxhash / 1000 bytes 326.00 ns/op 328.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 330.00 ns/op 332.00 ns/op 0.99
fastMsgIdFn sha256 / 10000 bytes 63.333 us/op 64.606 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.8120 us/op 1.8280 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 1.2040 us/op 1.1960 us/op 1.01
100 bytes - compress - snappyjs 1.2845 us/op 1.5423 us/op 0.83
100 bytes - compress - snappy 1.0690 us/op 1.2592 us/op 0.85
200 bytes - compress - snappyjs 2.1083 us/op 1.9940 us/op 1.06
200 bytes - compress - snappy 1.1485 us/op 1.4424 us/op 0.80
300 bytes - compress - snappyjs 2.2918 us/op 2.8788 us/op 0.80
300 bytes - compress - snappy 1.2625 us/op 1.4512 us/op 0.87
400 bytes - compress - snappyjs 2.3826 us/op 2.8935 us/op 0.82
400 bytes - compress - snappy 1.2296 us/op 1.3528 us/op 0.91
500 bytes - compress - snappyjs 2.6689 us/op 2.8804 us/op 0.93
500 bytes - compress - snappy 1.3159 us/op 1.4140 us/op 0.93
1000 bytes - compress - snappyjs 4.1112 us/op 5.9518 us/op 0.69
1000 bytes - compress - snappy 1.4710 us/op 1.8876 us/op 0.78
10000 bytes - compress - snappyjs 28.291 us/op 30.342 us/op 0.93
10000 bytes - compress - snappy 27.798 us/op 51.392 us/op 0.54
100 bytes - uncompress - snappyjs 1.0028 us/op 1.0564 us/op 0.95
100 bytes - uncompress - snappy 1.0172 us/op 1.0930 us/op 0.93
200 bytes - uncompress - snappyjs 974.96 ns/op 1.0337 us/op 0.94
200 bytes - uncompress - snappy 1.0533 us/op 1.1810 us/op 0.89
300 bytes - uncompress - snappyjs 1.1278 us/op 1.2510 us/op 0.90
300 bytes - uncompress - snappy 1.1529 us/op 1.2925 us/op 0.89
400 bytes - uncompress - snappyjs 1.5815 us/op 1.3705 us/op 1.15
400 bytes - uncompress - snappy 1.2279 us/op 1.1969 us/op 1.03
500 bytes - uncompress - snappyjs 1.5865 us/op 1.5323 us/op 1.04
500 bytes - uncompress - snappy 1.2550 us/op 1.2538 us/op 1.00
1000 bytes - uncompress - snappyjs 2.1806 us/op 2.0610 us/op 1.06
1000 bytes - uncompress - snappy 1.5353 us/op 1.7241 us/op 0.89
10000 bytes - uncompress - snappyjs 14.450 us/op 15.770 us/op 0.92
10000 bytes - uncompress - snappy 28.742 us/op 43.931 us/op 0.65
send data - 1000 256B messages 15.354 ms/op 18.782 ms/op 0.82
send data - 1000 512B messages 20.251 ms/op 22.570 ms/op 0.90
send data - 1000 1024B messages 28.192 ms/op 30.430 ms/op 0.93
send data - 1000 1200B messages 26.847 ms/op 29.799 ms/op 0.90
send data - 1000 2048B messages 24.831 ms/op 30.911 ms/op 0.80
send data - 1000 4096B messages 29.612 ms/op 32.958 ms/op 0.90
send data - 1000 16384B messages 45.795 ms/op 48.186 ms/op 0.95
send data - 1000 65536B messages 114.13 ms/op 127.89 ms/op 0.89
enrSubnets - fastDeserialize 64 bits 915.00 ns/op 904.00 ns/op 1.01
enrSubnets - ssz BitVector 64 bits 343.00 ns/op 326.00 ns/op 1.05
enrSubnets - fastDeserialize 4 bits 130.00 ns/op 130.00 ns/op 1.00
enrSubnets - ssz BitVector 4 bits 343.00 ns/op 325.00 ns/op 1.06
prioritizePeers score -10:0 att 32-0.1 sync 2-0 235.68 us/op 251.68 us/op 0.94
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 261.74 us/op 281.69 us/op 0.93
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 374.46 us/op 408.75 us/op 0.92
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 700.23 us/op 763.19 us/op 0.92
prioritizePeers score 0:0 att 64-1 sync 4-1 843.72 us/op 955.06 us/op 0.88
array of 16000 items push then shift 1.6002 us/op 1.6579 us/op 0.97
LinkedList of 16000 items push then shift 7.2910 ns/op 8.9720 ns/op 0.81
array of 16000 items push then pop 74.517 ns/op 91.514 ns/op 0.81
LinkedList of 16000 items push then pop 7.1970 ns/op 8.6120 ns/op 0.84
array of 24000 items push then shift 2.3711 us/op 2.4645 us/op 0.96
LinkedList of 24000 items push then shift 7.3420 ns/op 9.1640 ns/op 0.80
array of 24000 items push then pop 99.169 ns/op 123.61 ns/op 0.80
LinkedList of 24000 items push then pop 7.2500 ns/op 8.5230 ns/op 0.85
intersect bitArray bitLen 8 6.5420 ns/op 6.3890 ns/op 1.02
intersect array and set length 8 38.675 ns/op 40.671 ns/op 0.95
intersect bitArray bitLen 128 30.531 ns/op 30.321 ns/op 1.01
intersect array and set length 128 633.31 ns/op 628.19 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 1.0240 us/op 1.0970 us/op 0.93
bitArray.getTrueBitIndexes() bitLen 248 1.8240 us/op 1.9220 us/op 0.95
bitArray.getTrueBitIndexes() bitLen 512 3.7240 us/op 4.1670 us/op 0.89
Full columns - reconstruct all 6 blobs 72.592 us/op 124.31 us/op 0.58
Full columns - reconstruct half of the blobs out of 6 51.124 us/op 63.273 us/op 0.81
Full columns - reconstruct single blob out of 6 18.727 us/op 24.230 us/op 0.77
Half columns - reconstruct all 6 blobs 272.13 ms/op 283.14 ms/op 0.96
Half columns - reconstruct half of the blobs out of 6 140.31 ms/op 143.92 ms/op 0.97
Half columns - reconstruct single blob out of 6 51.566 ms/op 53.373 ms/op 0.97
Full columns - reconstruct all 10 blobs 121.69 us/op 241.39 us/op 0.50
Full columns - reconstruct half of the blobs out of 10 79.188 us/op 118.22 us/op 0.67
Full columns - reconstruct single blob out of 10 20.929 us/op 29.167 us/op 0.72
Half columns - reconstruct all 10 blobs 453.18 ms/op 470.15 ms/op 0.96
Half columns - reconstruct half of the blobs out of 10 228.29 ms/op 236.91 ms/op 0.96
Half columns - reconstruct single blob out of 10 52.071 ms/op 53.525 ms/op 0.97
Full columns - reconstruct all 20 blobs 290.55 us/op 486.04 us/op 0.60
Full columns - reconstruct half of the blobs out of 20 141.65 us/op 282.11 us/op 0.50
Full columns - reconstruct single blob out of 20 21.372 us/op 33.558 us/op 0.64
Half columns - reconstruct all 20 blobs 863.82 ms/op 949.12 ms/op 0.91
Half columns - reconstruct half of the blobs out of 20 446.76 ms/op 447.43 ms/op 1.00
Half columns - reconstruct single blob out of 20 49.872 ms/op 48.359 ms/op 1.03
Buffer.concat 32 items 620.00 ns/op 595.00 ns/op 1.04
Uint8Array.set 32 items 1.0090 us/op 971.00 ns/op 1.04
Buffer.copy 2.2250 us/op 1.9950 us/op 1.12
Uint8Array.set - with subarray 2.3040 us/op 1.5590 us/op 1.48
Uint8Array.set - without subarray 997.00 ns/op 886.00 ns/op 1.13
getUint32 - dataview 203.00 ns/op 195.00 ns/op 1.04
getUint32 - manual 120.00 ns/op 117.00 ns/op 1.03
Set add up to 64 items then delete first 2.0026 us/op 2.2654 us/op 0.88
OrderedSet add up to 64 items then delete first 3.2394 us/op 3.2913 us/op 0.98
Set add up to 64 items then delete last 2.2680 us/op 2.2908 us/op 0.99
OrderedSet add up to 64 items then delete last 3.9059 us/op 3.7912 us/op 1.03
Set add up to 64 items then delete middle 2.4902 us/op 2.4551 us/op 1.01
OrderedSet add up to 64 items then delete middle 5.4722 us/op 5.3581 us/op 1.02
Set add up to 128 items then delete first 5.0311 us/op 4.9897 us/op 1.01
OrderedSet add up to 128 items then delete first 7.3534 us/op 7.6768 us/op 0.96
Set add up to 128 items then delete last 5.0488 us/op 4.8532 us/op 1.04
OrderedSet add up to 128 items then delete last 7.5583 us/op 7.2890 us/op 1.04
Set add up to 128 items then delete middle 4.9705 us/op 4.7995 us/op 1.04
OrderedSet add up to 128 items then delete middle 14.973 us/op 13.661 us/op 1.10
Set add up to 256 items then delete first 12.011 us/op 10.355 us/op 1.16
OrderedSet add up to 256 items then delete first 15.023 us/op 17.808 us/op 0.84
Set add up to 256 items then delete last 10.042 us/op 9.6000 us/op 1.05
OrderedSet add up to 256 items then delete last 15.204 us/op 14.647 us/op 1.04
Set add up to 256 items then delete middle 9.7706 us/op 9.5680 us/op 1.02
OrderedSet add up to 256 items then delete middle 42.908 us/op 41.397 us/op 1.04
transfer serialized Status (84 B) 2.2740 us/op 2.1970 us/op 1.04
copy serialized Status (84 B) 1.2130 us/op 1.1610 us/op 1.04
transfer serialized SignedVoluntaryExit (112 B) 2.3320 us/op 2.1740 us/op 1.07
copy serialized SignedVoluntaryExit (112 B) 1.2680 us/op 1.1660 us/op 1.09
transfer serialized ProposerSlashing (416 B) 2.3870 us/op 2.2540 us/op 1.06
copy serialized ProposerSlashing (416 B) 1.3240 us/op 1.2660 us/op 1.05
transfer serialized Attestation (485 B) 2.4120 us/op 2.2540 us/op 1.07
copy serialized Attestation (485 B) 1.3150 us/op 1.2860 us/op 1.02
transfer serialized AttesterSlashing (33232 B) 2.5470 us/op 3.0080 us/op 0.85
copy serialized AttesterSlashing (33232 B) 5.2090 us/op 4.7890 us/op 1.09
transfer serialized Small SignedBeaconBlock (128000 B) 4.0550 us/op 4.6830 us/op 0.87
copy serialized Small SignedBeaconBlock (128000 B) 11.565 us/op 11.543 us/op 1.00
transfer serialized Avg SignedBeaconBlock (200000 B) 4.7170 us/op 5.2750 us/op 0.89
copy serialized Avg SignedBeaconBlock (200000 B) 21.397 us/op 16.570 us/op 1.29
transfer serialized BlobsSidecar (524380 B) 4.7540 us/op 6.2100 us/op 0.77
copy serialized BlobsSidecar (524380 B) 67.687 us/op 175.45 us/op 0.39
transfer serialized Big SignedBeaconBlock (1000000 B) 5.0810 us/op 7.1440 us/op 0.71
copy serialized Big SignedBeaconBlock (1000000 B) 123.07 us/op 197.82 us/op 0.62
pass gossip attestations to forkchoice per slot 2.7393 ms/op 2.7100 ms/op 1.01
forkChoice updateHead vc 100000 bc 64 eq 0 476.93 us/op 466.36 us/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 0 2.8423 ms/op 2.8154 ms/op 1.01
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7348 ms/op 4.6839 ms/op 1.01
forkChoice updateHead vc 600000 bc 320 eq 0 2.8506 ms/op 2.8339 ms/op 1.01
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8883 ms/op 2.8616 ms/op 1.01
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1498 ms/op 3.1257 ms/op 1.01
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8706 ms/op 2.9211 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9982 ms/op 3.0028 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 300000 9.2020 ms/op 9.6480 ms/op 0.95
computeDeltas 1400000 validators 0% inactive 13.787 ms/op 13.773 ms/op 1.00
computeDeltas 1400000 validators 10% inactive 12.837 ms/op 12.730 ms/op 1.01
computeDeltas 1400000 validators 20% inactive 11.615 ms/op 11.531 ms/op 1.01
computeDeltas 1400000 validators 50% inactive 8.7904 ms/op 8.6953 ms/op 1.01
computeDeltas 2100000 validators 0% inactive 20.824 ms/op 20.523 ms/op 1.01
computeDeltas 2100000 validators 10% inactive 19.316 ms/op 18.878 ms/op 1.02
computeDeltas 2100000 validators 20% inactive 17.510 ms/op 16.965 ms/op 1.03
computeDeltas 2100000 validators 50% inactive 13.255 ms/op 12.844 ms/op 1.03
altair processAttestation - 250000 vs - 7PWei normalcase 2.0114 ms/op 2.0237 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 2.8972 ms/op 2.9252 ms/op 0.99
altair processAttestation - setStatus - 1/6 committees join 118.73 us/op 151.11 us/op 0.79
altair processAttestation - setStatus - 1/3 committees join 231.42 us/op 231.74 us/op 1.00
altair processAttestation - setStatus - 1/2 committees join 326.08 us/op 331.00 us/op 0.99
altair processAttestation - setStatus - 2/3 committees join 423.04 us/op 417.82 us/op 1.01
altair processAttestation - setStatus - 4/5 committees join 581.89 us/op 575.18 us/op 1.01
altair processAttestation - setStatus - 100% committees join 680.43 us/op 682.09 us/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase 4.1622 ms/op 4.1280 ms/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase hashState 27.849 ms/op 32.642 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase 32.025 ms/op 33.134 ms/op 0.97
altair processBlock - 250000 vs - 7PWei worstcase hashState 74.892 ms/op 71.963 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5564 ms/op 1.6138 ms/op 0.96
phase0 processBlock - 250000 vs - 7PWei worstcase 21.143 ms/op 19.783 ms/op 1.07
altair processEth1Data - 250000 vs - 7PWei normalcase 363.68 us/op 343.93 us/op 1.06
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.3140 us/op 5.7760 us/op 1.09
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 43.270 us/op 37.463 us/op 1.16
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.303 us/op 10.136 us/op 1.21
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.9190 us/op 6.2290 us/op 1.11
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 157.93 us/op 141.03 us/op 1.12
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9250 ms/op 1.8697 ms/op 1.03
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.3341 ms/op 2.3508 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.3388 ms/op 2.3792 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.6834 ms/op 4.4015 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4269 ms/op 2.4531 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.8322 ms/op 4.5091 ms/op 1.07
Tree 40 250000 create 411.76 ms/op 397.94 ms/op 1.03
Tree 40 250000 get(125000) 139.36 ns/op 138.72 ns/op 1.00
Tree 40 250000 set(125000) 1.4399 us/op 1.3830 us/op 1.04
Tree 40 250000 toArray() 15.355 ms/op 14.622 ms/op 1.05
Tree 40 250000 iterate all - toArray() + loop 15.402 ms/op 14.723 ms/op 1.05
Tree 40 250000 iterate all - get(i) 49.233 ms/op 48.172 ms/op 1.02
Array 250000 create 2.8062 ms/op 2.7536 ms/op 1.02
Array 250000 clone - spread 794.96 us/op 779.11 us/op 1.02
Array 250000 get(125000) 0.41400 ns/op 0.39400 ns/op 1.05
Array 250000 set(125000) 0.43500 ns/op 0.41300 ns/op 1.05
Array 250000 iterate all - loop 93.245 us/op 78.790 us/op 1.18
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.496 ms/op 40.365 ms/op 1.03
Array.fill - length 1000000 3.3685 ms/op 3.2965 ms/op 1.02
Array push - length 1000000 15.729 ms/op 11.900 ms/op 1.32
Array.get 0.31379 ns/op 0.26422 ns/op 1.19
Uint8Array.get 0.43445 ns/op 0.42716 ns/op 1.02
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.859 ms/op 15.159 ms/op 1.05
altair processEpoch - mainnet_e81889 266.28 ms/op 263.52 ms/op 1.01
mainnet_e81889 - altair beforeProcessEpoch 17.275 ms/op 17.096 ms/op 1.01
mainnet_e81889 - altair processJustificationAndFinalization 5.4890 us/op 5.1940 us/op 1.06
mainnet_e81889 - altair processInactivityUpdates 3.9683 ms/op 3.9709 ms/op 1.00
mainnet_e81889 - altair processRewardsAndPenalties 39.432 ms/op 37.649 ms/op 1.05
mainnet_e81889 - altair processRegistryUpdates 704.00 ns/op 687.00 ns/op 1.02
mainnet_e81889 - altair processSlashings 179.00 ns/op 171.00 ns/op 1.05
mainnet_e81889 - altair processEth1DataReset 174.00 ns/op 166.00 ns/op 1.05
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1752 ms/op 1.1444 ms/op 1.03
mainnet_e81889 - altair processSlashingsReset 876.00 ns/op 827.00 ns/op 1.06
mainnet_e81889 - altair processRandaoMixesReset 1.1170 us/op 1.0750 us/op 1.04
mainnet_e81889 - altair processHistoricalRootsUpdate 174.00 ns/op 168.00 ns/op 1.04
mainnet_e81889 - altair processParticipationFlagUpdates 509.00 ns/op 488.00 ns/op 1.04
mainnet_e81889 - altair processSyncCommitteeUpdates 143.00 ns/op 134.00 ns/op 1.07
mainnet_e81889 - altair afterProcessEpoch 43.712 ms/op 41.875 ms/op 1.04
capella processEpoch - mainnet_e217614 896.15 ms/op 917.23 ms/op 0.98
mainnet_e217614 - capella beforeProcessEpoch 63.868 ms/op 61.018 ms/op 1.05
mainnet_e217614 - capella processJustificationAndFinalization 5.2100 us/op 5.2290 us/op 1.00
mainnet_e217614 - capella processInactivityUpdates 14.381 ms/op 13.876 ms/op 1.04
mainnet_e217614 - capella processRewardsAndPenalties 166.39 ms/op 167.44 ms/op 0.99
mainnet_e217614 - capella processRegistryUpdates 6.4850 us/op 6.3700 us/op 1.02
mainnet_e217614 - capella processSlashings 174.00 ns/op 173.00 ns/op 1.01
mainnet_e217614 - capella processEth1DataReset 172.00 ns/op 172.00 ns/op 1.00
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.0702 ms/op 4.0276 ms/op 1.01
mainnet_e217614 - capella processSlashingsReset 868.00 ns/op 846.00 ns/op 1.03
mainnet_e217614 - capella processRandaoMixesReset 1.1130 us/op 1.1380 us/op 0.98
mainnet_e217614 - capella processHistoricalRootsUpdate 172.00 ns/op 177.00 ns/op 0.97
mainnet_e217614 - capella processParticipationFlagUpdates 525.00 ns/op 497.00 ns/op 1.06
mainnet_e217614 - capella afterProcessEpoch 116.83 ms/op 111.33 ms/op 1.05
phase0 processEpoch - mainnet_e58758 261.57 ms/op 267.71 ms/op 0.98
mainnet_e58758 - phase0 beforeProcessEpoch 68.950 ms/op 67.325 ms/op 1.02
mainnet_e58758 - phase0 processJustificationAndFinalization 5.4230 us/op 5.5470 us/op 0.98
mainnet_e58758 - phase0 processRewardsAndPenalties 38.727 ms/op 33.890 ms/op 1.14
mainnet_e58758 - phase0 processRegistryUpdates 3.1870 us/op 3.0410 us/op 1.05
mainnet_e58758 - phase0 processSlashings 180.00 ns/op 171.00 ns/op 1.05
mainnet_e58758 - phase0 processEth1DataReset 174.00 ns/op 167.00 ns/op 1.04
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1528 ms/op 1.1160 ms/op 1.03
mainnet_e58758 - phase0 processSlashingsReset 895.00 ns/op 864.00 ns/op 1.04
mainnet_e58758 - phase0 processRandaoMixesReset 1.1740 us/op 1.3750 us/op 0.85
mainnet_e58758 - phase0 processHistoricalRootsUpdate 177.00 ns/op 173.00 ns/op 1.02
mainnet_e58758 - phase0 processParticipationRecordUpdates 905.00 ns/op 863.00 ns/op 1.05
mainnet_e58758 - phase0 afterProcessEpoch 35.598 ms/op 33.605 ms/op 1.06
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3412 ms/op 1.3000 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9675 ms/op 1.9423 ms/op 1.01
altair processInactivityUpdates - 250000 normalcase 16.779 ms/op 15.668 ms/op 1.07
altair processInactivityUpdates - 250000 worstcase 16.191 ms/op 16.230 ms/op 1.00
phase0 processRegistryUpdates - 250000 normalcase 6.8780 us/op 6.8120 us/op 1.01
phase0 processRegistryUpdates - 250000 badcase_full_deposits 288.36 us/op 214.17 us/op 1.35
phase0 processRegistryUpdates - 250000 worstcase 0.5 107.53 ms/op 102.03 ms/op 1.05
altair processRewardsAndPenalties - 250000 normalcase 25.655 ms/op 25.733 ms/op 1.00
altair processRewardsAndPenalties - 250000 worstcase 25.457 ms/op 26.214 ms/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 7.1994 ms/op 7.0370 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 6.0881 ms/op 5.7749 ms/op 1.05
phase0 processSlashings - 250000 worstcase 99.991 us/op 77.535 us/op 1.29
altair processSyncCommitteeUpdates - 250000 10.847 ms/op 10.870 ms/op 1.00
BeaconState.hashTreeRoot - No change 224.00 ns/op 210.00 ns/op 1.07
BeaconState.hashTreeRoot - 1 full validator 80.262 us/op 81.846 us/op 0.98
BeaconState.hashTreeRoot - 32 full validator 828.01 us/op 1.0243 ms/op 0.81
BeaconState.hashTreeRoot - 512 full validator 10.765 ms/op 10.674 ms/op 1.01
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 98.680 us/op 115.44 us/op 0.85
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4317 ms/op 1.4349 ms/op 1.00
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 26.681 ms/op 21.022 ms/op 1.27
BeaconState.hashTreeRoot - 1 balances 70.972 us/op 70.010 us/op 1.01
BeaconState.hashTreeRoot - 32 balances 757.47 us/op 866.47 us/op 0.87
BeaconState.hashTreeRoot - 512 balances 7.1400 ms/op 8.1000 ms/op 0.88
BeaconState.hashTreeRoot - 250000 balances 175.70 ms/op 160.30 ms/op 1.10
aggregationBits - 2048 els - zipIndexesInBitList 21.215 us/op 20.659 us/op 1.03
byteArrayEquals 32 53.221 ns/op 51.914 ns/op 1.03
Buffer.compare 32 17.018 ns/op 16.576 ns/op 1.03
byteArrayEquals 1024 1.5725 us/op 1.5402 us/op 1.02
Buffer.compare 1024 24.252 ns/op 23.746 ns/op 1.02
byteArrayEquals 16384 25.024 us/op 24.525 us/op 1.02
Buffer.compare 16384 199.32 ns/op 177.93 ns/op 1.12
byteArrayEquals 123687377 189.04 ms/op 186.72 ms/op 1.01
Buffer.compare 123687377 6.4861 ms/op 6.0759 ms/op 1.07
byteArrayEquals 32 - diff last byte 51.960 ns/op 51.370 ns/op 1.01
Buffer.compare 32 - diff last byte 16.834 ns/op 22.451 ns/op 0.75
byteArrayEquals 1024 - diff last byte 1.5714 us/op 1.5602 us/op 1.01
Buffer.compare 1024 - diff last byte 24.687 ns/op 24.532 ns/op 1.01
byteArrayEquals 16384 - diff last byte 25.038 us/op 24.719 us/op 1.01
Buffer.compare 16384 - diff last byte 193.79 ns/op 195.80 ns/op 0.99
byteArrayEquals 123687377 - diff last byte 192.00 ms/op 186.41 ms/op 1.03
Buffer.compare 123687377 - diff last byte 7.6907 ms/op 6.1217 ms/op 1.26
byteArrayEquals 32 - random bytes 5.1490 ns/op 5.0320 ns/op 1.02
Buffer.compare 32 - random bytes 17.741 ns/op 16.761 ns/op 1.06
byteArrayEquals 1024 - random bytes 5.1270 ns/op 5.0350 ns/op 1.02
Buffer.compare 1024 - random bytes 17.103 ns/op 16.762 ns/op 1.02
byteArrayEquals 16384 - random bytes 5.1220 ns/op 5.0310 ns/op 1.02
Buffer.compare 16384 - random bytes 17.400 ns/op 16.658 ns/op 1.04
byteArrayEquals 123687377 - random bytes 6.4800 ns/op 6.2700 ns/op 1.03
Buffer.compare 123687377 - random bytes 18.610 ns/op 18.170 ns/op 1.02
regular array get 100000 times 34.030 us/op 31.601 us/op 1.08
wrappedArray get 100000 times 45.135 us/op 31.540 us/op 1.43
arrayWithProxy get 100000 times 13.058 ms/op 13.423 ms/op 0.97
ssz.Root.equals 48.460 ns/op 44.191 ns/op 1.10
byteArrayEquals 47.474 ns/op 43.343 ns/op 1.10
Buffer.compare 10.343 ns/op 9.8660 ns/op 1.05
processSlot - 1 slots 10.197 us/op 10.045 us/op 1.02
processSlot - 32 slots 2.0171 ms/op 3.2838 ms/op 0.61
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.7254 ms/op 2.8158 ms/op 1.32
getCommitteeAssignments - req 1 vs - 250000 vc 2.1236 ms/op 2.0694 ms/op 1.03
getCommitteeAssignments - req 100 vs - 250000 vc 4.1615 ms/op 4.0382 ms/op 1.03
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3490 ms/op 4.2820 ms/op 1.02
findModifiedValidators - 10000 modified validators 777.52 ms/op 720.09 ms/op 1.08
findModifiedValidators - 1000 modified validators 778.66 ms/op 683.00 ms/op 1.14
findModifiedValidators - 100 modified validators 229.39 ms/op 179.96 ms/op 1.27
findModifiedValidators - 10 modified validators 159.78 ms/op 244.64 ms/op 0.65
findModifiedValidators - 1 modified validators 150.15 ms/op 130.34 ms/op 1.15
findModifiedValidators - no difference 187.11 ms/op 193.86 ms/op 0.97
compare ViewDUs 6.0922 s/op 5.8800 s/op 1.04
compare each validator Uint8Array 1.0348 s/op 1.8175 s/op 0.57
compare ViewDU to Uint8Array 1.0377 s/op 1.0543 s/op 0.98
migrate state 1000000 validators, 24 modified, 0 new 845.00 ms/op 848.86 ms/op 1.00
migrate state 1000000 validators, 1700 modified, 1000 new 1.0821 s/op 1.1239 s/op 0.96
migrate state 1000000 validators, 3400 modified, 2000 new 1.2990 s/op 1.3032 s/op 1.00
migrate state 1500000 validators, 24 modified, 0 new 871.86 ms/op 767.22 ms/op 1.14
migrate state 1500000 validators, 1700 modified, 1000 new 1.0994 s/op 1.0188 s/op 1.08
migrate state 1500000 validators, 3400 modified, 2000 new 1.3163 s/op 1.1461 s/op 1.15
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.3600 ns/op 4.1300 ns/op 1.06
state getBlockRootAtSlot - 250000 vs - 7PWei 561.91 ns/op 602.26 ns/op 0.93
naive computeProposerIndex 100000 validators 51.610 ms/op 47.418 ms/op 1.09
computeProposerIndex 100000 validators 1.5292 ms/op 1.4729 ms/op 1.04
naiveGetNextSyncCommitteeIndices 1000 validators 7.0914 s/op 7.3131 s/op 0.97
getNextSyncCommitteeIndices 1000 validators 122.64 ms/op 109.03 ms/op 1.12
naiveGetNextSyncCommitteeIndices 10000 validators 6.9642 s/op 7.1937 s/op 0.97
getNextSyncCommitteeIndices 10000 validators 111.63 ms/op 108.92 ms/op 1.02
naiveGetNextSyncCommitteeIndices 100000 validators 6.7866 s/op 7.3026 s/op 0.93
getNextSyncCommitteeIndices 100000 validators 110.45 ms/op 108.48 ms/op 1.02
naive computeShuffledIndex 100000 validators 21.698 s/op 23.397 s/op 0.93
cached computeShuffledIndex 100000 validators 557.29 ms/op 527.94 ms/op 1.06
naive computeShuffledIndex 2000000 validators 480.25 s/op 456.65 s/op 1.05
cached computeShuffledIndex 2000000 validators 37.517 s/op 28.707 s/op 1.31
computeProposers - vc 250000 639.74 us/op 606.37 us/op 1.06
computeEpochShuffling - vc 250000 42.901 ms/op 40.751 ms/op 1.05
getNextSyncCommittee - vc 250000 10.483 ms/op 10.136 ms/op 1.03
computeSigningRoot for AttestationData 19.705 us/op 18.833 us/op 1.05
hash AttestationData serialized data then Buffer.toString(base64) 1.6443 us/op 1.5379 us/op 1.07
toHexString serialized data 1.2109 us/op 1.0923 us/op 1.11
Buffer.toString(base64) 156.22 ns/op 154.39 ns/op 1.01
nodejs block root to RootHex using toHex 145.66 ns/op 158.51 ns/op 0.92
nodejs block root to RootHex using toRootHex 88.916 ns/op 89.582 ns/op 0.99
nodejs fromHex(blob) 118.05 us/op 113.48 us/op 1.04
nodejs fromHexInto(blob) 822.39 us/op 800.26 us/op 1.03
nodejs block root to RootHex using the deprecated toHexString 222.38 ns/op 205.81 ns/op 1.08
browser block root to RootHex using toHex 183.94 ns/op 170.64 ns/op 1.08
browser block root to RootHex using toRootHex 172.57 ns/op 165.38 ns/op 1.04
browser fromHex(blob) 818.44 us/op 763.03 us/op 1.07
browser fromHexInto(blob) 821.94 us/op 791.17 us/op 1.04
browser block root to RootHex using the deprecated toHexString 845.91 ns/op 751.36 ns/op 1.13

by benchmarkbot/action

@wemeetagain wemeetagain merged commit a8c0c7a into unstable Dec 1, 2025
36 of 42 checks passed
@wemeetagain wemeetagain deleted the nflaig/test-current-file branch December 1, 2025 19:48
@codecov
Copy link

codecov bot commented Dec 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.01%. Comparing base (c2cf1aa) to head (842c1fb).
⚠️ Report is 12 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #8632   +/-   ##
=========================================
  Coverage     52.01%   52.01%           
=========================================
  Files           848      848           
  Lines         65855    65855           
  Branches       4811     4811           
=========================================
  Hits          34256    34256           
  Misses        31530    31530           
  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.

@wemeetagain
Copy link
Member

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