Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement focil EIP-7805 #7342

Draft
wants to merge 7 commits into
base: unstable
Choose a base branch
from
Draft

feat: implement focil EIP-7805 #7342

wants to merge 7 commits into from

Conversation

ensi321
Copy link
Contributor

@ensi321 ensi321 commented Jan 9, 2025

Do not merge - PR for reference only

Relevant issue #7340

@nflaig nflaig assigned nflaig and unassigned nflaig Jan 9, 2025
@nflaig nflaig added the status-do-not-merge Merging this issue will break the build. Do not merge! label Jan 9, 2025
Copy link
Contributor

github-actions bot commented Jan 9, 2025

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 61b7cfa Previous: 18a0d68 Ratio
forkChoice updateHead vc 600000 bc 64 eq 300000 15.428 ms/op 54.706 ms/op 0.28
Full benchmark results
Benchmark suite Current: 61b7cfa Previous: 18a0d68 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.6645 ms/op 1.1040 ms/op 1.51
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 55.080 us/op 47.211 us/op 1.17
BLS verify - blst 1.0235 ms/op 792.70 us/op 1.29
BLS verifyMultipleSignatures 3 - blst 1.4251 ms/op 1.2621 ms/op 1.13
BLS verifyMultipleSignatures 8 - blst 2.2172 ms/op 1.8084 ms/op 1.23
BLS verifyMultipleSignatures 32 - blst 6.7751 ms/op 5.0180 ms/op 1.35
BLS verifyMultipleSignatures 64 - blst 10.987 ms/op 9.4633 ms/op 1.16
BLS verifyMultipleSignatures 128 - blst 18.931 ms/op 17.988 ms/op 1.05
BLS deserializing 10000 signatures 718.28 ms/op 734.03 ms/op 0.98
BLS deserializing 100000 signatures 7.3709 s/op 7.1874 s/op 1.03
BLS verifyMultipleSignatures - same message - 3 - blst 1.1844 ms/op 910.52 us/op 1.30
BLS verifyMultipleSignatures - same message - 8 - blst 1.3241 ms/op 999.57 us/op 1.32
BLS verifyMultipleSignatures - same message - 32 - blst 1.9200 ms/op 1.7200 ms/op 1.12
BLS verifyMultipleSignatures - same message - 64 - blst 2.9843 ms/op 2.6512 ms/op 1.13
BLS verifyMultipleSignatures - same message - 128 - blst 4.9163 ms/op 4.4681 ms/op 1.10
BLS aggregatePubkeys 32 - blst 21.537 us/op 20.493 us/op 1.05
BLS aggregatePubkeys 128 - blst 74.808 us/op 73.004 us/op 1.02
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 77.046 ms/op 58.541 ms/op 1.32
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 68.290 ms/op 50.429 ms/op 1.35
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 53.840 ms/op 42.456 ms/op 1.27
getSlashingsAndExits - default max 172.99 us/op 129.35 us/op 1.34
getSlashingsAndExits - 2k 599.29 us/op 392.83 us/op 1.53
proposeBlockBody type=full, size=empty 8.9487 ms/op 6.5200 ms/op 1.37
isKnown best case - 1 super set check 786.00 ns/op 298.00 ns/op 2.64
isKnown normal case - 2 super set checks 778.00 ns/op 312.00 ns/op 2.49
isKnown worse case - 16 super set checks 796.00 ns/op 278.00 ns/op 2.86
InMemoryCheckpointStateCache - add get delete 4.6070 us/op 3.1020 us/op 1.49
validate api signedAggregateAndProof - struct 1.9182 ms/op 1.4079 ms/op 1.36
validate gossip signedAggregateAndProof - struct 1.7730 ms/op 1.3852 ms/op 1.28
batch validate gossip attestation - vc 640000 - chunk 32 149.45 us/op 129.49 us/op 1.15
batch validate gossip attestation - vc 640000 - chunk 64 128.38 us/op 124.61 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 128 126.30 us/op 119.80 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 256 121.21 us/op 136.26 us/op 0.89
pickEth1Vote - no votes 1.2058 ms/op 1.6040 ms/op 0.75
pickEth1Vote - max votes 9.3373 ms/op 10.273 ms/op 0.91
pickEth1Vote - Eth1Data hashTreeRoot value x2048 18.635 ms/op 21.005 ms/op 0.89
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 27.688 ms/op 29.523 ms/op 0.94
pickEth1Vote - Eth1Data fastSerialize value x2048 548.00 us/op 673.54 us/op 0.81
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.3184 ms/op 4.0605 ms/op 0.82
bytes32 toHexString 476.00 ns/op 773.00 ns/op 0.62
bytes32 Buffer.toString(hex) 239.00 ns/op 301.00 ns/op 0.79
bytes32 Buffer.toString(hex) from Uint8Array 394.00 ns/op 548.00 ns/op 0.72
bytes32 Buffer.toString(hex) + 0x 249.00 ns/op 305.00 ns/op 0.82
Object access 1 prop 0.20100 ns/op 0.21900 ns/op 0.92
Map access 1 prop 0.13700 ns/op 0.15500 ns/op 0.88
Object get x1000 6.0930 ns/op 7.2020 ns/op 0.85
Map get x1000 6.7900 ns/op 8.5130 ns/op 0.80
Object set x1000 52.251 ns/op 60.314 ns/op 0.87
Map set x1000 27.343 ns/op 40.622 ns/op 0.67
Return object 10000 times 0.29890 ns/op 0.35520 ns/op 0.84
Throw Error 10000 times 3.3952 us/op 3.9594 us/op 0.86
toHex 163.56 ns/op 197.22 ns/op 0.83
Buffer.from 143.22 ns/op 176.45 ns/op 0.81
shared Buffer 85.460 ns/op 108.70 ns/op 0.79
fastMsgIdFn sha256 / 200 bytes 2.2340 us/op 2.8720 us/op 0.78
fastMsgIdFn h32 xxhash / 200 bytes 231.00 ns/op 370.00 ns/op 0.62
fastMsgIdFn h64 xxhash / 200 bytes 269.00 ns/op 314.00 ns/op 0.86
fastMsgIdFn sha256 / 1000 bytes 7.5160 us/op 8.4200 us/op 0.89
fastMsgIdFn h32 xxhash / 1000 bytes 389.00 ns/op 512.00 ns/op 0.76
fastMsgIdFn h64 xxhash / 1000 bytes 342.00 ns/op 421.00 ns/op 0.81
fastMsgIdFn sha256 / 10000 bytes 64.451 us/op 73.741 us/op 0.87
fastMsgIdFn h32 xxhash / 10000 bytes 1.8960 us/op 2.1740 us/op 0.87
fastMsgIdFn h64 xxhash / 10000 bytes 1.2430 us/op 1.3840 us/op 0.90
send data - 1000 256B messages 14.187 ms/op 17.468 ms/op 0.81
send data - 1000 512B messages 19.456 ms/op 23.414 ms/op 0.83
send data - 1000 1024B messages 30.210 ms/op 32.408 ms/op 0.93
send data - 1000 1200B messages 30.570 ms/op 33.454 ms/op 0.91
send data - 1000 2048B messages 37.198 ms/op 40.143 ms/op 0.93
send data - 1000 4096B messages 35.067 ms/op 40.915 ms/op 0.86
send data - 1000 16384B messages 79.881 ms/op 87.057 ms/op 0.92
send data - 1000 65536B messages 227.61 ms/op 258.91 ms/op 0.88
enrSubnets - fastDeserialize 64 bits 1.4040 us/op 1.4450 us/op 0.97
enrSubnets - ssz BitVector 64 bits 466.00 ns/op 543.00 ns/op 0.86
enrSubnets - fastDeserialize 4 bits 190.00 ns/op 249.00 ns/op 0.76
enrSubnets - ssz BitVector 4 bits 448.00 ns/op 460.00 ns/op 0.97
prioritizePeers score -10:0 att 32-0.1 sync 2-0 173.97 us/op 172.08 us/op 1.01
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 189.23 us/op 196.04 us/op 0.97
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 292.36 us/op 250.96 us/op 1.16
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 495.68 us/op 452.34 us/op 1.10
prioritizePeers score 0:0 att 64-1 sync 4-1 638.67 us/op 741.52 us/op 0.86
array of 16000 items push then shift 1.6697 us/op 1.8877 us/op 0.88
LinkedList of 16000 items push then shift 7.5270 ns/op 9.5570 ns/op 0.79
array of 16000 items push then pop 121.42 ns/op 149.58 ns/op 0.81
LinkedList of 16000 items push then pop 7.4910 ns/op 9.6270 ns/op 0.78
array of 24000 items push then shift 2.5329 us/op 2.7987 us/op 0.91
LinkedList of 24000 items push then shift 8.2240 ns/op 9.7710 ns/op 0.84
array of 24000 items push then pop 181.67 ns/op 206.17 ns/op 0.88
LinkedList of 24000 items push then pop 8.1280 ns/op 9.4400 ns/op 0.86
intersect bitArray bitLen 8 6.6810 ns/op 7.7050 ns/op 0.87
intersect array and set length 8 61.778 ns/op 81.517 ns/op 0.76
intersect bitArray bitLen 128 30.673 ns/op 35.515 ns/op 0.86
intersect array and set length 128 729.76 ns/op 974.26 ns/op 0.75
bitArray.getTrueBitIndexes() bitLen 128 1.5670 us/op 2.2000 us/op 0.71
bitArray.getTrueBitIndexes() bitLen 248 2.6880 us/op 3.4210 us/op 0.79
bitArray.getTrueBitIndexes() bitLen 512 5.1300 us/op 6.9960 us/op 0.73
Buffer.concat 32 items 813.00 ns/op 1.0390 us/op 0.78
Uint8Array.set 32 items 1.8810 us/op 1.9080 us/op 0.99
Buffer.copy 2.9340 us/op 3.7130 us/op 0.79
Uint8Array.set - with subarray 3.3440 us/op 3.7970 us/op 0.88
Uint8Array.set - without subarray 2.1210 us/op 1.9480 us/op 1.09
getUint32 - dataview 295.00 ns/op 335.00 ns/op 0.88
getUint32 - manual 249.00 ns/op 290.00 ns/op 0.86
Set add up to 64 items then delete first 3.0260 us/op 3.1121 us/op 0.97
OrderedSet add up to 64 items then delete first 4.4948 us/op 4.5860 us/op 0.98
Set add up to 64 items then delete last 3.2267 us/op 3.5031 us/op 0.92
OrderedSet add up to 64 items then delete last 5.2940 us/op 5.1197 us/op 1.03
Set add up to 64 items then delete middle 3.2222 us/op 3.2713 us/op 0.98
OrderedSet add up to 64 items then delete middle 6.6729 us/op 6.9993 us/op 0.95
Set add up to 128 items then delete first 6.0272 us/op 7.6949 us/op 0.78
OrderedSet add up to 128 items then delete first 7.9831 us/op 11.991 us/op 0.67
Set add up to 128 items then delete last 5.7829 us/op 7.3426 us/op 0.79
OrderedSet add up to 128 items then delete last 10.401 us/op 11.144 us/op 0.93
Set add up to 128 items then delete middle 6.2848 us/op 7.1830 us/op 0.87
OrderedSet add up to 128 items then delete middle 16.567 us/op 18.298 us/op 0.91
Set add up to 256 items then delete first 12.629 us/op 14.755 us/op 0.86
OrderedSet add up to 256 items then delete first 20.273 us/op 23.239 us/op 0.87
Set add up to 256 items then delete last 12.682 us/op 14.654 us/op 0.87
OrderedSet add up to 256 items then delete last 20.350 us/op 22.452 us/op 0.91
Set add up to 256 items then delete middle 11.260 us/op 14.272 us/op 0.79
OrderedSet add up to 256 items then delete middle 45.940 us/op 56.682 us/op 0.81
transfer serialized Status (84 B) 3.0410 us/op 3.7240 us/op 0.82
copy serialized Status (84 B) 1.5910 us/op 1.8040 us/op 0.88
transfer serialized SignedVoluntaryExit (112 B) 3.1850 us/op 3.8880 us/op 0.82
copy serialized SignedVoluntaryExit (112 B) 1.5760 us/op 2.0090 us/op 0.78
transfer serialized ProposerSlashing (416 B) 3.9130 us/op 4.1870 us/op 0.93
copy serialized ProposerSlashing (416 B) 2.3260 us/op 2.7620 us/op 0.84
transfer serialized Attestation (485 B) 3.9380 us/op 4.4420 us/op 0.89
copy serialized Attestation (485 B) 2.6150 us/op 3.0550 us/op 0.86
transfer serialized AttesterSlashing (33232 B) 4.1000 us/op 4.1330 us/op 0.99
copy serialized AttesterSlashing (33232 B) 9.7860 us/op 11.656 us/op 0.84
transfer serialized Small SignedBeaconBlock (128000 B) 4.3540 us/op 5.5230 us/op 0.79
copy serialized Small SignedBeaconBlock (128000 B) 29.462 us/op 39.357 us/op 0.75
transfer serialized Avg SignedBeaconBlock (200000 B) 5.5300 us/op 6.6050 us/op 0.84
copy serialized Avg SignedBeaconBlock (200000 B) 43.035 us/op 49.477 us/op 0.87
transfer serialized BlobsSidecar (524380 B) 6.2060 us/op 7.0350 us/op 0.88
copy serialized BlobsSidecar (524380 B) 147.72 us/op 157.96 us/op 0.94
transfer serialized Big SignedBeaconBlock (1000000 B) 6.3030 us/op 8.6260 us/op 0.73
copy serialized Big SignedBeaconBlock (1000000 B) 268.92 us/op 256.58 us/op 1.05
pass gossip attestations to forkchoice per slot 2.8061 ms/op 3.4914 ms/op 0.80
forkChoice updateHead vc 100000 bc 64 eq 0 485.52 us/op 567.06 us/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 0 4.9304 ms/op 6.2050 ms/op 0.79
forkChoice updateHead vc 1000000 bc 64 eq 0 5.1651 ms/op 9.0462 ms/op 0.57
forkChoice updateHead vc 600000 bc 320 eq 0 3.1019 ms/op 4.6535 ms/op 0.67
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1081 ms/op 5.0855 ms/op 0.61
forkChoice updateHead vc 600000 bc 7200 eq 0 4.0256 ms/op 7.6865 ms/op 0.52
forkChoice updateHead vc 600000 bc 64 eq 1000 10.599 ms/op 16.702 ms/op 0.63
forkChoice updateHead vc 600000 bc 64 eq 10000 10.484 ms/op 12.679 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 300000 15.428 ms/op 54.706 ms/op 0.28
computeDeltas 500000 validators 300 proto nodes 4.2366 ms/op 5.6119 ms/op 0.75
computeDeltas 500000 validators 1200 proto nodes 4.1862 ms/op 5.2537 ms/op 0.80
computeDeltas 500000 validators 7200 proto nodes 4.1477 ms/op 8.6721 ms/op 0.48
computeDeltas 750000 validators 300 proto nodes 6.2121 ms/op 8.8509 ms/op 0.70
computeDeltas 750000 validators 1200 proto nodes 6.2525 ms/op 8.1025 ms/op 0.77
computeDeltas 750000 validators 7200 proto nodes 6.3842 ms/op 7.5593 ms/op 0.84
computeDeltas 1400000 validators 300 proto nodes 11.584 ms/op 12.782 ms/op 0.91
computeDeltas 1400000 validators 1200 proto nodes 11.571 ms/op 12.194 ms/op 0.95
computeDeltas 1400000 validators 7200 proto nodes 11.531 ms/op 13.799 ms/op 0.84
computeDeltas 2100000 validators 300 proto nodes 17.226 ms/op 21.314 ms/op 0.81
computeDeltas 2100000 validators 1200 proto nodes 17.628 ms/op 21.306 ms/op 0.83
computeDeltas 2100000 validators 7200 proto nodes 17.379 ms/op 19.749 ms/op 0.88
altair processAttestation - 250000 vs - 7PWei normalcase 1.8136 ms/op 3.1429 ms/op 0.58
altair processAttestation - 250000 vs - 7PWei worstcase 2.6467 ms/op 4.2468 ms/op 0.62
altair processAttestation - setStatus - 1/6 committees join 123.63 us/op 195.07 us/op 0.63
altair processAttestation - setStatus - 1/3 committees join 228.35 us/op 331.87 us/op 0.69
altair processAttestation - setStatus - 1/2 committees join 315.93 us/op 388.20 us/op 0.81
altair processAttestation - setStatus - 2/3 committees join 406.16 us/op 499.21 us/op 0.81
altair processAttestation - setStatus - 4/5 committees join 565.63 us/op 729.22 us/op 0.78
altair processAttestation - setStatus - 100% committees join 672.56 us/op 890.47 us/op 0.76
altair processBlock - 250000 vs - 7PWei normalcase 4.3272 ms/op 6.8430 ms/op 0.63
altair processBlock - 250000 vs - 7PWei normalcase hashState 30.285 ms/op 31.233 ms/op 0.97
altair processBlock - 250000 vs - 7PWei worstcase 46.873 ms/op 37.961 ms/op 1.23
altair processBlock - 250000 vs - 7PWei worstcase hashState 86.404 ms/op 78.791 ms/op 1.10
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3726 ms/op 2.2133 ms/op 1.07
phase0 processBlock - 250000 vs - 7PWei worstcase 28.317 ms/op 24.012 ms/op 1.18
altair processEth1Data - 250000 vs - 7PWei normalcase 330.32 us/op 425.65 us/op 0.78
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.8800 us/op 6.7690 us/op 1.46
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 51.136 us/op 54.588 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.162 us/op 11.667 us/op 0.87
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.8450 us/op 7.6390 us/op 1.16
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 197.03 us/op 185.34 us/op 1.06
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.4257 ms/op 1.2444 ms/op 1.15
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7063 ms/op 1.9692 ms/op 0.87
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.5865 ms/op 1.6513 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.1450 ms/op 4.2397 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.9042 ms/op 1.8969 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.2231 ms/op 4.7207 ms/op 1.11
Tree 40 250000 create 203.82 ms/op 236.17 ms/op 0.86
Tree 40 250000 get(125000) 150.19 ns/op 174.61 ns/op 0.86
Tree 40 250000 set(125000) 659.14 ns/op 716.68 ns/op 0.92
Tree 40 250000 toArray() 17.314 ms/op 19.876 ms/op 0.87
Tree 40 250000 iterate all - toArray() + loop 20.298 ms/op 21.781 ms/op 0.93
Tree 40 250000 iterate all - get(i) 58.475 ms/op 58.009 ms/op 1.01
Array 250000 create 3.3069 ms/op 3.6614 ms/op 0.90
Array 250000 clone - spread 1.4775 ms/op 1.5433 ms/op 0.96
Array 250000 get(125000) 0.41600 ns/op 0.44300 ns/op 0.94
Array 250000 set(125000) 0.44400 ns/op 0.46500 ns/op 0.95
Array 250000 iterate all - loop 106.42 us/op 100.53 us/op 1.06
phase0 afterProcessEpoch - 250000 vs - 7PWei 49.665 ms/op 54.594 ms/op 0.91
Array.fill - length 1000000 3.7418 ms/op 3.8453 ms/op 0.97
Array push - length 1000000 19.373 ms/op 18.948 ms/op 1.02
Array.get 0.29277 ns/op 0.30015 ns/op 0.98
Uint8Array.get 0.44384 ns/op 0.46504 ns/op 0.95
phase0 beforeProcessEpoch - 250000 vs - 7PWei 18.591 ms/op 19.130 ms/op 0.97
altair processEpoch - mainnet_e81889 310.20 ms/op 298.37 ms/op 1.04
mainnet_e81889 - altair beforeProcessEpoch 20.880 ms/op 19.098 ms/op 1.09
mainnet_e81889 - altair processJustificationAndFinalization 15.673 us/op 15.133 us/op 1.04
mainnet_e81889 - altair processInactivityUpdates 5.6229 ms/op 5.5439 ms/op 1.01
mainnet_e81889 - altair processRewardsAndPenalties 52.296 ms/op 45.273 ms/op 1.16
mainnet_e81889 - altair processRegistryUpdates 3.7010 us/op 2.5690 us/op 1.44
mainnet_e81889 - altair processSlashings 637.00 ns/op 477.00 ns/op 1.34
mainnet_e81889 - altair processEth1DataReset 709.00 ns/op 556.00 ns/op 1.28
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.7479 ms/op 1.4729 ms/op 1.87
mainnet_e81889 - altair processSlashingsReset 3.9810 us/op 3.3310 us/op 1.20
mainnet_e81889 - altair processRandaoMixesReset 8.8370 us/op 6.3210 us/op 1.40
mainnet_e81889 - altair processHistoricalRootsUpdate 1.1130 us/op 680.00 ns/op 1.64
mainnet_e81889 - altair processParticipationFlagUpdates 2.6430 us/op 2.2480 us/op 1.18
mainnet_e81889 - altair processSyncCommitteeUpdates 1.0930 us/op 608.00 ns/op 1.80
mainnet_e81889 - altair afterProcessEpoch 50.107 ms/op 53.893 ms/op 0.93
capella processEpoch - mainnet_e217614 1.0593 s/op 1.0443 s/op 1.01
mainnet_e217614 - capella beforeProcessEpoch 77.334 ms/op 80.452 ms/op 0.96
mainnet_e217614 - capella processJustificationAndFinalization 14.713 us/op 17.341 us/op 0.85
mainnet_e217614 - capella processInactivityUpdates 17.227 ms/op 20.327 ms/op 0.85
mainnet_e217614 - capella processRewardsAndPenalties 249.40 ms/op 247.42 ms/op 1.01
mainnet_e217614 - capella processRegistryUpdates 20.713 us/op 18.912 us/op 1.10
mainnet_e217614 - capella processSlashings 837.00 ns/op 1.7500 us/op 0.48
mainnet_e217614 - capella processEth1DataReset 702.00 ns/op 819.00 ns/op 0.86
mainnet_e217614 - capella processEffectiveBalanceUpdates 6.8456 ms/op 18.384 ms/op 0.37
mainnet_e217614 - capella processSlashingsReset 4.7260 us/op 8.3470 us/op 0.57
mainnet_e217614 - capella processRandaoMixesReset 7.2180 us/op 6.6240 us/op 1.09
mainnet_e217614 - capella processHistoricalRootsUpdate 944.00 ns/op 883.00 ns/op 1.07
mainnet_e217614 - capella processParticipationFlagUpdates 1.9590 us/op 3.0620 us/op 0.64
mainnet_e217614 - capella afterProcessEpoch 124.96 ms/op 135.77 ms/op 0.92
phase0 processEpoch - mainnet_e58758 367.74 ms/op 356.94 ms/op 1.03
mainnet_e58758 - phase0 beforeProcessEpoch 83.988 ms/op 104.34 ms/op 0.80
mainnet_e58758 - phase0 processJustificationAndFinalization 13.230 us/op 18.855 us/op 0.70
mainnet_e58758 - phase0 processRewardsAndPenalties 24.224 ms/op 22.626 ms/op 1.07
mainnet_e58758 - phase0 processRegistryUpdates 10.558 us/op 10.449 us/op 1.01
mainnet_e58758 - phase0 processSlashings 1.3300 us/op 559.00 ns/op 2.38
mainnet_e58758 - phase0 processEth1DataReset 603.00 ns/op 465.00 ns/op 1.30
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2168 ms/op 1.2448 ms/op 0.98
mainnet_e58758 - phase0 processSlashingsReset 3.3610 us/op 4.9140 us/op 0.68
mainnet_e58758 - phase0 processRandaoMixesReset 4.4460 us/op 6.5380 us/op 0.68
mainnet_e58758 - phase0 processHistoricalRootsUpdate 575.00 ns/op 850.00 ns/op 0.68
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.5320 us/op 4.0240 us/op 1.37
mainnet_e58758 - phase0 afterProcessEpoch 45.231 ms/op 45.942 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.6481 ms/op 1.4330 ms/op 1.15
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9055 ms/op 2.2870 ms/op 0.83
altair processInactivityUpdates - 250000 normalcase 19.732 ms/op 18.418 ms/op 1.07
altair processInactivityUpdates - 250000 worstcase 22.539 ms/op 18.220 ms/op 1.24
phase0 processRegistryUpdates - 250000 normalcase 9.5950 us/op 12.650 us/op 0.76
phase0 processRegistryUpdates - 250000 badcase_full_deposits 354.26 us/op 324.54 us/op 1.09
phase0 processRegistryUpdates - 250000 worstcase 0.5 111.54 ms/op 123.54 ms/op 0.90
altair processRewardsAndPenalties - 250000 normalcase 51.220 ms/op 40.173 ms/op 1.27
altair processRewardsAndPenalties - 250000 worstcase 44.552 ms/op 41.678 ms/op 1.07
phase0 getAttestationDeltas - 250000 normalcase 7.9864 ms/op 9.7855 ms/op 0.82
phase0 getAttestationDeltas - 250000 worstcase 8.0337 ms/op 8.1581 ms/op 0.98
phase0 processSlashings - 250000 worstcase 136.75 us/op 88.620 us/op 1.54
altair processSyncCommitteeUpdates - 250000 133.93 ms/op 136.98 ms/op 0.98
BeaconState.hashTreeRoot - No change 313.00 ns/op 270.00 ns/op 1.16
BeaconState.hashTreeRoot - 1 full validator 98.553 us/op 123.48 us/op 0.80
BeaconState.hashTreeRoot - 32 full validator 1.5909 ms/op 1.1997 ms/op 1.33
BeaconState.hashTreeRoot - 512 full validator 11.558 ms/op 10.103 ms/op 1.14
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 132.02 us/op 119.19 us/op 1.11
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.0984 ms/op 1.5506 ms/op 1.35
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 28.525 ms/op 19.699 ms/op 1.45
BeaconState.hashTreeRoot - 1 balances 154.92 us/op 97.625 us/op 1.59
BeaconState.hashTreeRoot - 32 balances 1.6350 ms/op 874.22 us/op 1.87
BeaconState.hashTreeRoot - 512 balances 10.496 ms/op 8.1950 ms/op 1.28
BeaconState.hashTreeRoot - 250000 balances 201.90 ms/op 170.69 ms/op 1.18
aggregationBits - 2048 els - zipIndexesInBitList 37.820 us/op 28.054 us/op 1.35
byteArrayEquals 32 56.020 ns/op 59.763 ns/op 0.94
Buffer.compare 32 18.226 ns/op 19.830 ns/op 0.92
byteArrayEquals 1024 1.6747 us/op 1.7725 us/op 0.94
Buffer.compare 1024 26.944 ns/op 29.274 ns/op 0.92
byteArrayEquals 16384 26.587 us/op 27.654 us/op 0.96
Buffer.compare 16384 209.48 ns/op 219.61 ns/op 0.95
byteArrayEquals 123687377 199.74 ms/op 209.90 ms/op 0.95
Buffer.compare 123687377 10.178 ms/op 8.6221 ms/op 1.18
byteArrayEquals 32 - diff last byte 54.373 ns/op 56.255 ns/op 0.97
Buffer.compare 32 - diff last byte 18.013 ns/op 18.716 ns/op 0.96
byteArrayEquals 1024 - diff last byte 1.6307 us/op 1.6735 us/op 0.97
Buffer.compare 1024 - diff last byte 26.417 ns/op 26.127 ns/op 1.01
byteArrayEquals 16384 - diff last byte 25.802 us/op 26.551 us/op 0.97
Buffer.compare 16384 - diff last byte 181.35 ns/op 208.07 ns/op 0.87
byteArrayEquals 123687377 - diff last byte 193.55 ms/op 199.66 ms/op 0.97
Buffer.compare 123687377 - diff last byte 7.5968 ms/op 6.8407 ms/op 1.11
byteArrayEquals 32 - random bytes 5.1390 ns/op 5.2910 ns/op 0.97
Buffer.compare 32 - random bytes 17.466 ns/op 17.575 ns/op 0.99
byteArrayEquals 1024 - random bytes 5.2400 ns/op 5.2740 ns/op 0.99
Buffer.compare 1024 - random bytes 17.464 ns/op 17.678 ns/op 0.99
byteArrayEquals 16384 - random bytes 5.2670 ns/op 5.2980 ns/op 0.99
Buffer.compare 16384 - random bytes 17.538 ns/op 17.565 ns/op 1.00
byteArrayEquals 123687377 - random bytes 6.6600 ns/op 6.6900 ns/op 1.00
Buffer.compare 123687377 - random bytes 19.710 ns/op 18.880 ns/op 1.04
regular array get 100000 times 33.762 us/op 43.506 us/op 0.78
wrappedArray get 100000 times 33.477 us/op 35.321 us/op 0.95
arrayWithProxy get 100000 times 13.206 ms/op 12.636 ms/op 1.05
ssz.Root.equals 46.604 ns/op 47.002 ns/op 0.99
byteArrayEquals 45.787 ns/op 46.838 ns/op 0.98
Buffer.compare 10.588 ns/op 10.536 ns/op 1.00
processSlot - 1 slots 14.437 us/op 13.239 us/op 1.09
processSlot - 32 slots 3.6318 ms/op 2.9151 ms/op 1.25
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 39.138 ms/op 35.472 ms/op 1.10
getCommitteeAssignments - req 1 vs - 250000 vc 2.1663 ms/op 2.1735 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 4.1551 ms/op 4.2247 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3947 ms/op 4.5705 ms/op 0.96
findModifiedValidators - 10000 modified validators 276.52 ms/op 261.29 ms/op 1.06
findModifiedValidators - 1000 modified validators 193.71 ms/op 245.11 ms/op 0.79
findModifiedValidators - 100 modified validators 179.60 ms/op 195.84 ms/op 0.92
findModifiedValidators - 10 modified validators 169.94 ms/op 189.36 ms/op 0.90
findModifiedValidators - 1 modified validators 169.20 ms/op 177.98 ms/op 0.95
findModifiedValidators - no difference 175.42 ms/op 185.25 ms/op 0.95
compare ViewDUs 3.2627 s/op 3.3121 s/op 0.99
compare each validator Uint8Array 1.6925 s/op 1.8383 s/op 0.92
compare ViewDU to Uint8Array 1.0297 s/op 1.4073 s/op 0.73
migrate state 1000000 validators, 24 modified, 0 new 711.77 ms/op 967.85 ms/op 0.74
migrate state 1000000 validators, 1700 modified, 1000 new 963.12 ms/op 1.1327 s/op 0.85
migrate state 1000000 validators, 3400 modified, 2000 new 1.2010 s/op 1.2316 s/op 0.98
migrate state 1500000 validators, 24 modified, 0 new 714.71 ms/op 752.72 ms/op 0.95
migrate state 1500000 validators, 1700 modified, 1000 new 980.51 ms/op 1.2026 s/op 0.82
migrate state 1500000 validators, 3400 modified, 2000 new 1.1876 s/op 1.3114 s/op 0.91
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.6700 ns/op 5.5000 ns/op 0.85
state getBlockRootAtSlot - 250000 vs - 7PWei 907.63 ns/op 995.44 ns/op 0.91
computeProposers - vc 250000 7.5524 ms/op 8.2682 ms/op 0.91
computeEpochShuffling - vc 250000 43.015 ms/op 47.975 ms/op 0.90
getNextSyncCommittee - vc 250000 133.09 ms/op 148.10 ms/op 0.90
computeSigningRoot for AttestationData 21.926 us/op 25.963 us/op 0.84
hash AttestationData serialized data then Buffer.toString(base64) 1.6217 us/op 1.8524 us/op 0.88
toHexString serialized data 989.96 ns/op 1.2352 us/op 0.80
Buffer.toString(base64) 207.17 ns/op 230.95 ns/op 0.90
nodejs block root to RootHex using toHex 151.54 ns/op 181.53 ns/op 0.83
nodejs block root to RootHex using toRootHex 92.373 ns/op 113.03 ns/op 0.82
browser block root to RootHex using the deprecated toHexString 241.67 ns/op 304.67 ns/op 0.79
browser block root to RootHex using toHex 200.75 ns/op 253.53 ns/op 0.79
browser block root to RootHex using toRootHex 175.39 ns/op 198.02 ns/op 0.89

by benchmarkbot/action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status-do-not-merge Merging this issue will break the build. Do not merge!
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants