lodestar icon indicating copy to clipboard operation
lodestar copied to clipboard

feat: implement focil EIP-7805

Open ensi321 opened this issue 1 year ago • 2 comments

Do not merge - PR for reference only

Relevant issue #7340

ensi321 avatar Jan 09 '25 20:01 ensi321

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 54f727e12ed51bc70ab5cd342bf76f4283bc394e Previous: 548d7aa41e8b57a959acf0d3db293e93f0d24c74 Ratio
10000 bytes - uncompress - snappy 8.2573 us/op 30.164 us/op 0.27
Full benchmark results
Benchmark suite Current: 54f727e12ed51bc70ab5cd342bf76f4283bc394e Previous: 548d7aa41e8b57a959acf0d3db293e93f0d24c74 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 847.09 us/op 930.42 us/op 0.91
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.085 us/op 36.236 us/op 1.00
BLS verify - blst 809.30 us/op 867.99 us/op 0.93
BLS verifyMultipleSignatures 3 - blst 1.1922 ms/op 1.3086 ms/op 0.91
BLS verifyMultipleSignatures 8 - blst 1.6431 ms/op 1.9669 ms/op 0.84
BLS verifyMultipleSignatures 32 - blst 4.8169 ms/op 4.9972 ms/op 0.96
BLS verifyMultipleSignatures 64 - blst 9.4111 ms/op 9.8835 ms/op 0.95
BLS verifyMultipleSignatures 128 - blst 17.401 ms/op 17.016 ms/op 1.02
BLS deserializing 10000 signatures 686.44 ms/op 697.03 ms/op 0.98
BLS deserializing 100000 signatures 6.8799 s/op 7.0000 s/op 0.98
BLS verifyMultipleSignatures - same message - 3 - blst 878.09 us/op 973.61 us/op 0.90
BLS verifyMultipleSignatures - same message - 8 - blst 999.94 us/op 1.0901 ms/op 0.92
BLS verifyMultipleSignatures - same message - 32 - blst 1.6573 ms/op 1.7495 ms/op 0.95
BLS verifyMultipleSignatures - same message - 64 - blst 2.5049 ms/op 2.6695 ms/op 0.94
BLS verifyMultipleSignatures - same message - 128 - blst 4.2587 ms/op 4.4582 ms/op 0.96
BLS aggregatePubkeys 32 - blst 19.156 us/op 19.749 us/op 0.97
BLS aggregatePubkeys 128 - blst 69.206 us/op 71.079 us/op 0.97
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 47.826 ms/op 51.693 ms/op 0.93
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 44.169 ms/op 49.032 ms/op 0.90
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 34.404 ms/op 38.568 ms/op 0.89
getSlashingsAndExits - default max 71.170 us/op 73.504 us/op 0.97
getSlashingsAndExits - 2k 278.50 us/op 367.92 us/op 0.76
isKnown best case - 1 super set check 200.00 ns/op 206.00 ns/op 0.97
isKnown normal case - 2 super set checks 197.00 ns/op 202.00 ns/op 0.98
isKnown worse case - 16 super set checks 194.00 ns/op 202.00 ns/op 0.96
InMemoryCheckpointStateCache - add get delete 2.2810 us/op 2.3890 us/op 0.95
validate api signedAggregateAndProof - struct 1.3112 ms/op 1.4865 ms/op 0.88
validate gossip signedAggregateAndProof - struct 1.3101 ms/op 1.4470 ms/op 0.91
batch validate gossip attestation - vc 640000 - chunk 32 111.96 us/op 122.01 us/op 0.92
batch validate gossip attestation - vc 640000 - chunk 64 100.28 us/op 108.23 us/op 0.93
batch validate gossip attestation - vc 640000 - chunk 128 94.611 us/op 102.72 us/op 0.92
batch validate gossip attestation - vc 640000 - chunk 256 99.307 us/op 110.17 us/op 0.90
pickEth1Vote - no votes 1.4837 ms/op 980.74 us/op 1.51
pickEth1Vote - max votes 7.5354 ms/op 7.7709 ms/op 0.97
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.390 ms/op 13.349 ms/op 0.85
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.515 ms/op 19.900 ms/op 0.83
pickEth1Vote - Eth1Data fastSerialize value x2048 446.62 us/op 433.52 us/op 1.03
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.5162 ms/op 2.4563 ms/op 1.43
bytes32 toHexString 364.00 ns/op 373.00 ns/op 0.98
bytes32 Buffer.toString(hex) 254.00 ns/op 247.00 ns/op 1.03
bytes32 Buffer.toString(hex) from Uint8Array 322.00 ns/op 336.00 ns/op 0.96
bytes32 Buffer.toString(hex) + 0x 253.00 ns/op 249.00 ns/op 1.02
Object access 1 prop 0.11600 ns/op 0.12500 ns/op 0.93
Map access 1 prop 0.12200 ns/op 0.13400 ns/op 0.91
Object get x1000 5.8140 ns/op 5.8220 ns/op 1.00
Map get x1000 6.2780 ns/op 6.5170 ns/op 0.96
Object set x1000 29.836 ns/op 31.877 ns/op 0.94
Map set x1000 20.800 ns/op 21.298 ns/op 0.98
Return object 10000 times 0.28590 ns/op 0.29410 ns/op 0.97
Throw Error 10000 times 4.8683 us/op 4.3822 us/op 1.11
toHex 132.19 ns/op 140.82 ns/op 0.94
Buffer.from 120.30 ns/op 127.75 ns/op 0.94
shared Buffer 91.587 ns/op 88.892 ns/op 1.03
fastMsgIdFn sha256 / 200 bytes 2.1640 us/op 2.2150 us/op 0.98
fastMsgIdFn h32 xxhash / 200 bytes 203.00 ns/op 203.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 200 bytes 262.00 ns/op 262.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 7.0530 us/op 7.4480 us/op 0.95
fastMsgIdFn h32 xxhash / 1000 bytes 330.00 ns/op 342.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 334.00 ns/op 339.00 ns/op 0.99
fastMsgIdFn sha256 / 10000 bytes 63.894 us/op 66.840 us/op 0.96
fastMsgIdFn h32 xxhash / 10000 bytes 1.9110 us/op 1.8390 us/op 1.04
fastMsgIdFn h64 xxhash / 10000 bytes 1.3000 us/op 1.2170 us/op 1.07
100 bytes - compress - snappyjs 2.1451 us/op 1.5388 us/op 1.39
100 bytes - compress - snappy 1.3147 us/op 1.1514 us/op 1.14
200 bytes - compress - snappyjs 2.0761 us/op 1.9755 us/op 1.05
200 bytes - compress - snappy 1.3791 us/op 1.3096 us/op 1.05
300 bytes - compress - snappyjs 2.6499 us/op 2.9092 us/op 0.91
300 bytes - compress - snappy 1.8730 us/op 1.3695 us/op 1.37
400 bytes - compress - snappyjs 3.1558 us/op 3.1368 us/op 1.01
400 bytes - compress - snappy 1.3797 us/op 1.3746 us/op 1.00
500 bytes - compress - snappyjs 3.9193 us/op 3.2497 us/op 1.21
500 bytes - compress - snappy 1.4425 us/op 1.4557 us/op 0.99
1000 bytes - compress - snappyjs 4.5199 us/op 4.4018 us/op 1.03
1000 bytes - compress - snappy 1.8067 us/op 1.9490 us/op 0.93
10000 bytes - compress - snappyjs 32.645 us/op 33.173 us/op 0.98
10000 bytes - compress - snappy 34.897 us/op 41.044 us/op 0.85
100 bytes - uncompress - snappyjs 874.60 ns/op 1.2104 us/op 0.72
100 bytes - uncompress - snappy 1.0910 us/op 1.1073 us/op 0.99
200 bytes - uncompress - snappyjs 1.4228 us/op 1.6762 us/op 0.85
200 bytes - uncompress - snappy 1.3319 us/op 1.0698 us/op 1.25
300 bytes - uncompress - snappyjs 2.0756 us/op 1.4565 us/op 1.43
300 bytes - uncompress - snappy 1.3055 us/op 1.1131 us/op 1.17
400 bytes - uncompress - snappyjs 1.3318 us/op 1.5967 us/op 0.83
400 bytes - uncompress - snappy 2.8984 us/op 1.2693 us/op 2.28
500 bytes - uncompress - snappyjs 2.1812 us/op 1.8874 us/op 1.16
500 bytes - uncompress - snappy 1.3916 us/op 1.2474 us/op 1.12
1000 bytes - uncompress - snappyjs 2.3255 us/op 2.7853 us/op 0.83
1000 bytes - uncompress - snappy 1.7686 us/op 1.5457 us/op 1.14
10000 bytes - uncompress - snappyjs 17.926 us/op 14.725 us/op 1.22
10000 bytes - uncompress - snappy 8.2573 us/op 30.164 us/op 0.27
send data - 1000 256B messages 39.583 ms/op 17.988 ms/op 2.20
send data - 1000 512B messages 46.127 ms/op 22.664 ms/op 2.04
send data - 1000 1024B messages 61.962 ms/op 32.989 ms/op 1.88
send data - 1000 1200B messages 58.685 ms/op 32.566 ms/op 1.80
send data - 1000 2048B messages 60.987 ms/op 28.950 ms/op 2.11
send data - 1000 4096B messages 67.697 ms/op 34.075 ms/op 1.99
send data - 1000 16384B messages 90.496 ms/op 51.049 ms/op 1.77
send data - 1000 65536B messages 214.30 ms/op 119.80 ms/op 1.79
enrSubnets - fastDeserialize 64 bits 2.0140 us/op 901.00 ns/op 2.24
enrSubnets - ssz BitVector 64 bits 762.00 ns/op 331.00 ns/op 2.30
enrSubnets - fastDeserialize 4 bits 285.00 ns/op 126.00 ns/op 2.26
enrSubnets - ssz BitVector 4 bits 765.00 ns/op 333.00 ns/op 2.30
prioritizePeers score -10:0 att 32-0.1 sync 2-0 375.86 us/op 238.96 us/op 1.57
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 345.11 us/op 268.03 us/op 1.29
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 485.79 us/op 392.07 us/op 1.24
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 956.47 us/op 726.23 us/op 1.32
prioritizePeers score 0:0 att 64-1 sync 4-1 1.1990 ms/op 874.15 us/op 1.37
array of 16000 items push then shift 1.8133 us/op 1.6738 us/op 1.08
LinkedList of 16000 items push then shift 11.895 ns/op 7.5640 ns/op 1.57
array of 16000 items push then pop 102.90 ns/op 84.294 ns/op 1.22
LinkedList of 16000 items push then pop 10.655 ns/op 8.0060 ns/op 1.33
array of 24000 items push then shift 2.6766 us/op 2.3882 us/op 1.12
LinkedList of 24000 items push then shift 12.785 ns/op 7.5790 ns/op 1.69
array of 24000 items push then pop 144.14 ns/op 111.10 ns/op 1.30
LinkedList of 24000 items push then pop 10.597 ns/op 8.5430 ns/op 1.24
intersect bitArray bitLen 8 7.0920 ns/op 6.4600 ns/op 1.10
intersect array and set length 8 47.596 ns/op 37.644 ns/op 1.26
intersect bitArray bitLen 128 34.011 ns/op 29.570 ns/op 1.15
intersect array and set length 128 1.1559 us/op 627.74 ns/op 1.84
bitArray.getTrueBitIndexes() bitLen 128 1.6650 us/op 1.0170 us/op 1.64
bitArray.getTrueBitIndexes() bitLen 248 2.4850 us/op 1.7850 us/op 1.39
bitArray.getTrueBitIndexes() bitLen 512 5.8190 us/op 3.7850 us/op 1.54
Full columns - reconstruct all 6 blobs 178.41 us/op 112.83 us/op 1.58
Full columns - reconstruct half of the blobs out of 6 82.291 us/op 44.118 us/op 1.87
Full columns - reconstruct single blob out of 6 39.788 us/op 20.005 us/op 1.99
Half columns - reconstruct all 6 blobs 393.83 ms/op 279.40 ms/op 1.41
Half columns - reconstruct half of the blobs out of 6 181.31 ms/op 137.91 ms/op 1.31
Half columns - reconstruct single blob out of 6 76.362 ms/op 57.368 ms/op 1.33
Full columns - reconstruct all 10 blobs 329.48 us/op 153.69 us/op 2.14
Full columns - reconstruct half of the blobs out of 10 144.26 us/op 72.639 us/op 1.99
Full columns - reconstruct single blob out of 10 36.148 us/op 21.622 us/op 1.67
Half columns - reconstruct all 10 blobs 596.71 ms/op 488.60 ms/op 1.22
Half columns - reconstruct half of the blobs out of 10 291.44 ms/op 243.56 ms/op 1.20
Half columns - reconstruct single blob out of 10 67.901 ms/op 51.053 ms/op 1.33
Full columns - reconstruct all 20 blobs 792.28 us/op 301.38 us/op 2.63
Full columns - reconstruct half of the blobs out of 20 305.11 us/op 145.38 us/op 2.10
Full columns - reconstruct single blob out of 20 39.273 us/op 21.550 us/op 1.82
Half columns - reconstruct all 20 blobs 1.1058 s/op 907.67 ms/op 1.22
Half columns - reconstruct half of the blobs out of 20 472.53 ms/op 460.94 ms/op 1.03
Half columns - reconstruct single blob out of 20 54.147 ms/op 51.574 ms/op 1.05
Buffer.concat 32 items 623.00 ns/op 618.00 ns/op 1.01
Uint8Array.set 32 items 1.0250 us/op 1.3590 us/op 0.75
Buffer.copy 2.7520 us/op 2.1440 us/op 1.28
Uint8Array.set - with subarray 1.7030 us/op 1.6900 us/op 1.01
Uint8Array.set - without subarray 1.1730 us/op 1.2770 us/op 0.92
getUint32 - dataview 200.00 ns/op 200.00 ns/op 1.00
getUint32 - manual 126.00 ns/op 125.00 ns/op 1.01
Set add up to 64 items then delete first 2.2354 us/op 2.3611 us/op 0.95
OrderedSet add up to 64 items then delete first 3.5971 us/op 3.3344 us/op 1.08
Set add up to 64 items then delete last 2.4087 us/op 2.5730 us/op 0.94
OrderedSet add up to 64 items then delete last 4.0709 us/op 4.2142 us/op 0.97
Set add up to 64 items then delete middle 2.5453 us/op 2.8116 us/op 0.91
OrderedSet add up to 64 items then delete middle 6.2293 us/op 6.2742 us/op 0.99
Set add up to 128 items then delete first 5.8591 us/op 5.7595 us/op 1.02
OrderedSet add up to 128 items then delete first 8.1088 us/op 8.9823 us/op 0.90
Set add up to 128 items then delete last 5.6224 us/op 5.3006 us/op 1.06
OrderedSet add up to 128 items then delete last 7.4618 us/op 8.8718 us/op 0.84
Set add up to 128 items then delete middle 4.9780 us/op 5.3215 us/op 0.94
OrderedSet add up to 128 items then delete middle 14.584 us/op 14.919 us/op 0.98
Set add up to 256 items then delete first 11.017 us/op 11.655 us/op 0.95
OrderedSet add up to 256 items then delete first 15.951 us/op 16.590 us/op 0.96
Set add up to 256 items then delete last 9.8245 us/op 10.198 us/op 0.96
OrderedSet add up to 256 items then delete last 14.783 us/op 15.086 us/op 0.98
Set add up to 256 items then delete middle 9.8016 us/op 9.4703 us/op 1.03
OrderedSet add up to 256 items then delete middle 41.655 us/op 43.032 us/op 0.97
transfer serialized Status (84 B) 2.2260 us/op 2.1850 us/op 1.02
copy serialized Status (84 B) 1.2430 us/op 1.1910 us/op 1.04
transfer serialized SignedVoluntaryExit (112 B) 2.2590 us/op 2.2380 us/op 1.01
copy serialized SignedVoluntaryExit (112 B) 1.2260 us/op 1.2140 us/op 1.01
transfer serialized ProposerSlashing (416 B) 2.3470 us/op 2.2860 us/op 1.03
copy serialized ProposerSlashing (416 B) 1.4920 us/op 1.2600 us/op 1.18
transfer serialized Attestation (485 B) 3.7690 us/op 2.3140 us/op 1.63
copy serialized Attestation (485 B) 1.3210 us/op 1.2850 us/op 1.03
transfer serialized AttesterSlashing (33232 B) 2.4550 us/op 2.5190 us/op 0.97
copy serialized AttesterSlashing (33232 B) 3.8360 us/op 4.3090 us/op 0.89
transfer serialized Small SignedBeaconBlock (128000 B) 3.7870 us/op 4.1020 us/op 0.92
copy serialized Small SignedBeaconBlock (128000 B) 10.753 us/op 14.120 us/op 0.76
transfer serialized Avg SignedBeaconBlock (200000 B) 4.2100 us/op 4.2770 us/op 0.98
copy serialized Avg SignedBeaconBlock (200000 B) 17.545 us/op 18.530 us/op 0.95
transfer serialized BlobsSidecar (524380 B) 4.7200 us/op 5.1500 us/op 0.92
copy serialized BlobsSidecar (524380 B) 62.069 us/op 110.96 us/op 0.56
transfer serialized Big SignedBeaconBlock (1000000 B) 5.2890 us/op 5.2780 us/op 1.00
copy serialized Big SignedBeaconBlock (1000000 B) 140.00 us/op 126.67 us/op 1.11
pass gossip attestations to forkchoice per slot 2.7176 ms/op 2.7269 ms/op 1.00
forkChoice updateHead vc 100000 bc 64 eq 0 488.80 us/op 471.24 us/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 0 2.7944 ms/op 2.8099 ms/op 0.99
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7018 ms/op 4.6809 ms/op 1.00
forkChoice updateHead vc 600000 bc 320 eq 0 2.8461 ms/op 2.8330 ms/op 1.00
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8566 ms/op 2.8651 ms/op 1.00
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1062 ms/op 3.1782 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8314 ms/op 2.9129 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9454 ms/op 3.0470 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 300000 9.2782 ms/op 9.5957 ms/op 0.97
computeDeltas 1400000 validators 0% inactive 13.603 ms/op 13.791 ms/op 0.99
computeDeltas 1400000 validators 10% inactive 12.673 ms/op 12.810 ms/op 0.99
computeDeltas 1400000 validators 20% inactive 11.529 ms/op 11.513 ms/op 1.00
computeDeltas 1400000 validators 50% inactive 8.7074 ms/op 8.7964 ms/op 0.99
computeDeltas 2100000 validators 0% inactive 20.534 ms/op 20.615 ms/op 1.00
computeDeltas 2100000 validators 10% inactive 18.818 ms/op 18.817 ms/op 1.00
computeDeltas 2100000 validators 20% inactive 16.636 ms/op 17.006 ms/op 0.98
computeDeltas 2100000 validators 50% inactive 12.584 ms/op 13.015 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 1.9350 ms/op 2.0712 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 2.7850 ms/op 2.8745 ms/op 0.97
altair processAttestation - setStatus - 1/6 committees join 117.95 us/op 121.54 us/op 0.97
altair processAttestation - setStatus - 1/3 committees join 226.84 us/op 245.14 us/op 0.93
altair processAttestation - setStatus - 1/2 committees join 319.36 us/op 327.93 us/op 0.97
altair processAttestation - setStatus - 2/3 committees join 414.74 us/op 425.43 us/op 0.97
altair processAttestation - setStatus - 4/5 committees join 582.75 us/op 588.04 us/op 0.99
altair processAttestation - setStatus - 100% committees join 677.51 us/op 688.86 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 4.2033 ms/op 4.1833 ms/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.946 ms/op 32.414 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase 33.872 ms/op 32.092 ms/op 1.06
altair processBlock - 250000 vs - 7PWei worstcase hashState 72.891 ms/op 67.404 ms/op 1.08
phase0 processBlock - 250000 vs - 7PWei normalcase 1.7785 ms/op 1.6079 ms/op 1.11
phase0 processBlock - 250000 vs - 7PWei worstcase 21.540 ms/op 21.154 ms/op 1.02
altair processEth1Data - 250000 vs - 7PWei normalcase 346.87 us/op 329.68 us/op 1.05
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.8650 us/op 6.4230 us/op 1.07
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 51.651 us/op 45.606 us/op 1.13
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 13.874 us/op 11.790 us/op 1.18
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.0030 us/op 6.4040 us/op 1.25
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 151.99 us/op 146.44 us/op 1.04
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9158 ms/op 1.8073 ms/op 1.06
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4532 ms/op 2.3754 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4497 ms/op 2.2702 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.7515 ms/op 4.6174 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.6079 ms/op 2.3823 ms/op 1.09
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.8501 ms/op 4.5779 ms/op 1.06
Tree 40 250000 create 453.35 ms/op 427.18 ms/op 1.06
Tree 40 250000 get(125000) 134.04 ns/op 135.06 ns/op 0.99
Tree 40 250000 set(125000) 1.4226 us/op 1.4687 us/op 0.97
Tree 40 250000 toArray() 19.482 ms/op 15.538 ms/op 1.25
Tree 40 250000 iterate all - toArray() + loop 19.741 ms/op 15.381 ms/op 1.28
Tree 40 250000 iterate all - get(i) 56.299 ms/op 49.062 ms/op 1.15
Array 250000 create 3.3891 ms/op 3.6792 ms/op 0.92
Array 250000 clone - spread 819.88 us/op 784.59 us/op 1.04
Array 250000 get(125000) 0.40000 ns/op 0.40600 ns/op 0.99
Array 250000 set(125000) 0.42200 ns/op 0.43000 ns/op 0.98
Array 250000 iterate all - loop 83.928 us/op 100.67 us/op 0.83
phase0 afterProcessEpoch - 250000 vs - 7PWei 84.046 ms/op 39.972 ms/op 2.10
Array.fill - length 1000000 3.3906 ms/op 3.2827 ms/op 1.03
Array push - length 1000000 15.594 ms/op 13.586 ms/op 1.15
Array.get 0.28183 ns/op 0.27835 ns/op 1.01
Uint8Array.get 0.43621 ns/op 0.43404 ns/op 1.00
phase0 beforeProcessEpoch - 250000 vs - 7PWei 19.203 ms/op 16.106 ms/op 1.19
altair processEpoch - mainnet_e81889 298.60 ms/op 278.45 ms/op 1.07
mainnet_e81889 - altair beforeProcessEpoch 19.610 ms/op 18.917 ms/op 1.04
mainnet_e81889 - altair processJustificationAndFinalization 5.6510 us/op 5.4360 us/op 1.04
mainnet_e81889 - altair processInactivityUpdates 4.9660 ms/op 4.2138 ms/op 1.18
mainnet_e81889 - altair processRewardsAndPenalties 38.840 ms/op 37.470 ms/op 1.04
mainnet_e81889 - altair processRegistryUpdates 699.00 ns/op 651.00 ns/op 1.07
mainnet_e81889 - altair processSlashings 177.00 ns/op 180.00 ns/op 0.98
mainnet_e81889 - altair processEth1DataReset 172.00 ns/op 175.00 ns/op 0.98
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2158 ms/op 1.2018 ms/op 1.01
mainnet_e81889 - altair processSlashingsReset 881.00 ns/op 832.00 ns/op 1.06
mainnet_e81889 - altair processRandaoMixesReset 1.1520 us/op 1.0900 us/op 1.06
mainnet_e81889 - altair processHistoricalRootsUpdate 173.00 ns/op 174.00 ns/op 0.99
mainnet_e81889 - altair processParticipationFlagUpdates 521.00 ns/op 503.00 ns/op 1.04
mainnet_e81889 - altair processSyncCommitteeUpdates 137.00 ns/op 141.00 ns/op 0.97
mainnet_e81889 - altair afterProcessEpoch 89.294 ms/op 43.873 ms/op 2.04
capella processEpoch - mainnet_e217614 1.1090 s/op 831.10 ms/op 1.33
mainnet_e217614 - capella beforeProcessEpoch 72.031 ms/op 60.844 ms/op 1.18
mainnet_e217614 - capella processJustificationAndFinalization 5.8520 us/op 5.1700 us/op 1.13
mainnet_e217614 - capella processInactivityUpdates 15.378 ms/op 14.075 ms/op 1.09
mainnet_e217614 - capella processRewardsAndPenalties 198.08 ms/op 175.72 ms/op 1.13
mainnet_e217614 - capella processRegistryUpdates 6.9530 us/op 6.2760 us/op 1.11
mainnet_e217614 - capella processSlashings 199.00 ns/op 173.00 ns/op 1.15
mainnet_e217614 - capella processEth1DataReset 210.00 ns/op 172.00 ns/op 1.22
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.5977 ms/op 10.310 ms/op 0.45
mainnet_e217614 - capella processSlashingsReset 927.00 ns/op 858.00 ns/op 1.08
mainnet_e217614 - capella processRandaoMixesReset 1.2160 us/op 1.1130 us/op 1.09
mainnet_e217614 - capella processHistoricalRootsUpdate 182.00 ns/op 172.00 ns/op 1.06
mainnet_e217614 - capella processParticipationFlagUpdates 545.00 ns/op 517.00 ns/op 1.05
mainnet_e217614 - capella afterProcessEpoch 234.61 ms/op 112.62 ms/op 2.08
phase0 processEpoch - mainnet_e58758 369.29 ms/op 276.32 ms/op 1.34
mainnet_e58758 - phase0 beforeProcessEpoch 102.75 ms/op 73.257 ms/op 1.40
mainnet_e58758 - phase0 processJustificationAndFinalization 6.5640 us/op 5.5570 us/op 1.18
mainnet_e58758 - phase0 processRewardsAndPenalties 50.220 ms/op 39.694 ms/op 1.27
mainnet_e58758 - phase0 processRegistryUpdates 3.3080 us/op 3.1000 us/op 1.07
mainnet_e58758 - phase0 processSlashings 184.00 ns/op 178.00 ns/op 1.03
mainnet_e58758 - phase0 processEth1DataReset 179.00 ns/op 172.00 ns/op 1.04
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.6437 ms/op 1.1940 ms/op 1.38
mainnet_e58758 - phase0 processSlashingsReset 1.0340 us/op 935.00 ns/op 1.11
mainnet_e58758 - phase0 processRandaoMixesReset 1.2110 us/op 1.2050 us/op 1.00
mainnet_e58758 - phase0 processHistoricalRootsUpdate 178.00 ns/op 177.00 ns/op 1.01
mainnet_e58758 - phase0 processParticipationRecordUpdates 936.00 ns/op 891.00 ns/op 1.05
mainnet_e58758 - phase0 afterProcessEpoch 75.609 ms/op 41.204 ms/op 1.83
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4053 ms/op 1.3691 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.7009 ms/op 2.5541 ms/op 1.45
altair processInactivityUpdates - 250000 normalcase 22.631 ms/op 16.882 ms/op 1.34
altair processInactivityUpdates - 250000 worstcase 19.521 ms/op 18.353 ms/op 1.06
phase0 processRegistryUpdates - 250000 normalcase 8.9940 us/op 6.7410 us/op 1.33
phase0 processRegistryUpdates - 250000 badcase_full_deposits 301.37 us/op 255.95 us/op 1.18
phase0 processRegistryUpdates - 250000 worstcase 0.5 121.70 ms/op 96.545 ms/op 1.26
altair processRewardsAndPenalties - 250000 normalcase 32.430 ms/op 26.161 ms/op 1.24
altair processRewardsAndPenalties - 250000 worstcase 31.745 ms/op 25.134 ms/op 1.26
phase0 getAttestationDeltas - 250000 normalcase 9.6704 ms/op 6.8177 ms/op 1.42
phase0 getAttestationDeltas - 250000 worstcase 8.2413 ms/op 5.8273 ms/op 1.41
phase0 processSlashings - 250000 worstcase 115.14 us/op 85.852 us/op 1.34
altair processSyncCommitteeUpdates - 250000 12.227 ms/op 10.980 ms/op 1.11
BeaconState.hashTreeRoot - No change 228.00 ns/op 210.00 ns/op 1.09
BeaconState.hashTreeRoot - 1 full validator 107.94 us/op 97.167 us/op 1.11
BeaconState.hashTreeRoot - 32 full validator 1.0544 ms/op 775.74 us/op 1.36
BeaconState.hashTreeRoot - 512 full validator 12.855 ms/op 9.0847 ms/op 1.42
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 109.98 us/op 92.188 us/op 1.19
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5276 ms/op 1.3500 ms/op 1.13
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 22.068 ms/op 22.820 ms/op 0.97
BeaconState.hashTreeRoot - 1 balances 73.724 us/op 74.885 us/op 0.98
BeaconState.hashTreeRoot - 32 balances 782.20 us/op 805.19 us/op 0.97
BeaconState.hashTreeRoot - 512 balances 8.7093 ms/op 8.2607 ms/op 1.05
BeaconState.hashTreeRoot - 250000 balances 200.03 ms/op 168.03 ms/op 1.19
aggregationBits - 2048 els - zipIndexesInBitList 33.268 us/op 21.714 us/op 1.53
byteArrayEquals 32 62.055 ns/op 53.562 ns/op 1.16
Buffer.compare 32 18.134 ns/op 16.989 ns/op 1.07
byteArrayEquals 1024 1.7761 us/op 1.5795 us/op 1.12
Buffer.compare 1024 25.363 ns/op 25.180 ns/op 1.01
byteArrayEquals 16384 26.105 us/op 25.041 us/op 1.04
Buffer.compare 16384 184.25 ns/op 225.83 ns/op 0.82
byteArrayEquals 123687377 197.46 ms/op 192.24 ms/op 1.03
Buffer.compare 123687377 7.2639 ms/op 7.0428 ms/op 1.03
byteArrayEquals 32 - diff last byte 52.564 ns/op 51.878 ns/op 1.01
Buffer.compare 32 - diff last byte 17.285 ns/op 16.821 ns/op 1.03
byteArrayEquals 1024 - diff last byte 1.5969 us/op 1.5819 us/op 1.01
Buffer.compare 1024 - diff last byte 24.747 ns/op 24.712 ns/op 1.00
byteArrayEquals 16384 - diff last byte 25.568 us/op 25.204 us/op 1.01
Buffer.compare 16384 - diff last byte 199.88 ns/op 194.10 ns/op 1.03
byteArrayEquals 123687377 - diff last byte 195.18 ms/op 187.06 ms/op 1.04
Buffer.compare 123687377 - diff last byte 8.4975 ms/op 6.3965 ms/op 1.33
byteArrayEquals 32 - random bytes 5.2210 ns/op 4.9590 ns/op 1.05
Buffer.compare 32 - random bytes 17.405 ns/op 16.636 ns/op 1.05
byteArrayEquals 1024 - random bytes 5.1270 ns/op 4.9450 ns/op 1.04
Buffer.compare 1024 - random bytes 17.922 ns/op 16.554 ns/op 1.08
byteArrayEquals 16384 - random bytes 5.1600 ns/op 4.9260 ns/op 1.05
Buffer.compare 16384 - random bytes 17.982 ns/op 16.457 ns/op 1.09
byteArrayEquals 123687377 - random bytes 6.3500 ns/op 6.2500 ns/op 1.02
Buffer.compare 123687377 - random bytes 18.770 ns/op 17.830 ns/op 1.05
regular array get 100000 times 35.853 us/op 42.507 us/op 0.84
wrappedArray get 100000 times 32.556 us/op 31.602 us/op 1.03
arrayWithProxy get 100000 times 13.459 ms/op 17.787 ms/op 0.76
ssz.Root.equals 45.806 ns/op 44.705 ns/op 1.02
byteArrayEquals 44.898 ns/op 43.852 ns/op 1.02
Buffer.compare 10.217 ns/op 10.072 ns/op 1.01
processSlot - 1 slots 9.9970 us/op 10.122 us/op 0.99
processSlot - 32 slots 2.0277 ms/op 3.3013 ms/op 0.61
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.1659 ms/op 2.8532 ms/op 1.11
getCommitteeAssignments - req 1 vs - 250000 vc 2.1154 ms/op 2.0683 ms/op 1.02
getCommitteeAssignments - req 100 vs - 250000 vc 4.1249 ms/op 4.0247 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3770 ms/op 4.3005 ms/op 1.02
findModifiedValidators - 10000 modified validators 723.21 ms/op 728.18 ms/op 0.99
findModifiedValidators - 1000 modified validators 770.35 ms/op 668.63 ms/op 1.15
findModifiedValidators - 100 modified validators 282.87 ms/op 212.87 ms/op 1.33
findModifiedValidators - 10 modified validators 215.13 ms/op 139.00 ms/op 1.55
findModifiedValidators - 1 modified validators 188.79 ms/op 159.02 ms/op 1.19
findModifiedValidators - no difference 258.16 ms/op 208.95 ms/op 1.24
compare ViewDUs 6.5615 s/op 6.0907 s/op 1.08
compare each validator Uint8Array 1.2488 s/op 1.5051 s/op 0.83
compare ViewDU to Uint8Array 1.0471 s/op 1.0481 s/op 1.00
migrate state 1000000 validators, 24 modified, 0 new 1.0214 s/op 890.15 ms/op 1.15
migrate state 1000000 validators, 1700 modified, 1000 new 1.3716 s/op 1.4564 s/op 0.94
migrate state 1000000 validators, 3400 modified, 2000 new 1.5853 s/op 1.7953 s/op 0.88
migrate state 1500000 validators, 24 modified, 0 new 1.0646 s/op 1.1681 s/op 0.91
migrate state 1500000 validators, 1700 modified, 1000 new 1.2143 s/op 1.5469 s/op 0.78
migrate state 1500000 validators, 3400 modified, 2000 new 1.4290 s/op 1.9849 s/op 0.72
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.0600 ns/op 4.4400 ns/op 0.91
state getBlockRootAtSlot - 250000 vs - 7PWei 448.26 ns/op 572.49 ns/op 0.78
naive computeProposerIndex 100000 validators 46.966 ms/op 79.483 ms/op 0.59
computeProposerIndex 100000 validators 1.4696 ms/op 1.6447 ms/op 0.89
naiveGetNextSyncCommitteeIndices 1000 validators 7.5778 s/op 11.225 s/op 0.68
getNextSyncCommitteeIndices 1000 validators 105.88 ms/op 140.63 ms/op 0.75
naiveGetNextSyncCommitteeIndices 10000 validators 7.8099 s/op 10.201 s/op 0.77
getNextSyncCommitteeIndices 10000 validators 108.17 ms/op 122.97 ms/op 0.88
naiveGetNextSyncCommitteeIndices 100000 validators 7.7191 s/op 9.4836 s/op 0.81
getNextSyncCommitteeIndices 100000 validators 107.77 ms/op 143.47 ms/op 0.75
naive computeShuffledIndex 100000 validators 22.847 s/op 31.771 s/op 0.72
cached computeShuffledIndex 100000 validators 558.49 ms/op 574.19 ms/op 0.97
naive computeShuffledIndex 2000000 validators 445.80 s/op 483.44 s/op 0.92
cached computeShuffledIndex 2000000 validators 33.924 s/op 41.901 s/op 0.81
computeProposers - vc 250000 603.62 us/op 760.07 us/op 0.79
computeEpochShuffling - vc 250000 81.646 ms/op 42.008 ms/op 1.94
getNextSyncCommittee - vc 250000 9.9979 ms/op 10.535 ms/op 0.95
computeSigningRoot for AttestationData 19.398 us/op 21.442 us/op 0.90
hash AttestationData serialized data then Buffer.toString(base64) 1.5643 us/op 1.6005 us/op 0.98
toHexString serialized data 1.1280 us/op 1.2181 us/op 0.93
Buffer.toString(base64) 164.71 ns/op 169.04 ns/op 0.97
nodejs block root to RootHex using toHex 144.34 ns/op 152.79 ns/op 0.94
nodejs block root to RootHex using toRootHex 83.988 ns/op 87.425 ns/op 0.96
nodejs fromHex(blob) 112.56 us/op 120.97 us/op 0.93
nodejs fromHexInto(blob) 812.42 us/op 829.29 us/op 0.98
nodejs block root to RootHex using the deprecated toHexString 209.99 ns/op 218.28 ns/op 0.96
browser block root to RootHex using toHex 175.74 ns/op 176.33 ns/op 1.00
browser block root to RootHex using toRootHex 165.76 ns/op 166.35 ns/op 1.00
browser fromHex(blob) 786.04 us/op 799.93 us/op 0.98
browser fromHexInto(blob) 819.88 us/op 827.60 us/op 0.99
browser block root to RootHex using the deprecated toHexString 842.45 ns/op 837.78 ns/op 1.01

by benchmarkbot/action

github-actions[bot] avatar Jan 09 '25 21:01 github-actions[bot]

Codecov Report

:x: Patch coverage is 30.54662% with 864 lines in your changes missing coverage. Please review. :white_check_mark: Project coverage is 51.82%. Comparing base (c9deb9b) to head (aed75aa). :warning: Report is 1 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7342      +/-   ##
============================================
- Coverage     52.24%   51.82%   -0.43%     
============================================
  Files           852      860       +8     
  Lines         64991    66170    +1179     
  Branches       4772     4784      +12     
============================================
+ Hits          33952    34290     +338     
- Misses        30970    31811     +841     
  Partials         69       69              
: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 Aug 25 '25 11:08 codecov[bot]