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: add strategy support for state archives #7170

Open
wants to merge 4 commits into
base: unstable
Choose a base branch
from

Conversation

nazarhussain
Copy link
Contributor

Motivation

Make the state-archive process more generic so we can extend in future.

Description

  • Make the state-archive process to generic
  • Add feature flag to the cli to select a strategy

Steps to test or reproduce

  • Run all tests

@nazarhussain nazarhussain requested a review from a team as a code owner October 16, 2024 14:15
@nazarhussain nazarhussain self-assigned this Oct 16, 2024
@@ -0,0 +1,163 @@
import {Logger} from "@lodestar/utils";
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This file is actually old index.ts file, with only strategy specific changes.

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 4f07ee8 Previous: 245d63e Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.3026 ms/op 1.7157 ms/op 1.34
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 67.273 us/op 47.802 us/op 1.41
BLS verify - blst 988.94 us/op 879.04 us/op 1.13
BLS verifyMultipleSignatures 3 - blst 1.3472 ms/op 1.3164 ms/op 1.02
BLS verifyMultipleSignatures 8 - blst 2.0483 ms/op 2.0500 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst 6.1023 ms/op 4.5344 ms/op 1.35
BLS verifyMultipleSignatures 64 - blst 11.708 ms/op 8.4466 ms/op 1.39
BLS verifyMultipleSignatures 128 - blst 19.421 ms/op 15.982 ms/op 1.22
BLS deserializing 10000 signatures 742.66 ms/op 618.63 ms/op 1.20
BLS deserializing 100000 signatures 7.1846 s/op 6.2123 s/op 1.16
BLS verifyMultipleSignatures - same message - 3 - blst 1.4261 ms/op 962.59 us/op 1.48
BLS verifyMultipleSignatures - same message - 8 - blst 1.7358 ms/op 1.0871 ms/op 1.60
BLS verifyMultipleSignatures - same message - 32 - blst 1.8879 ms/op 1.7251 ms/op 1.09
BLS verifyMultipleSignatures - same message - 64 - blst 2.8164 ms/op 2.6052 ms/op 1.08
BLS verifyMultipleSignatures - same message - 128 - blst 4.6997 ms/op 4.2465 ms/op 1.11
BLS aggregatePubkeys 32 - blst 21.819 us/op 18.434 us/op 1.18
BLS aggregatePubkeys 128 - blst 75.662 us/op 65.118 us/op 1.16
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 77.238 ms/op 60.327 ms/op 1.28
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 66.206 ms/op 39.304 ms/op 1.68
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 46.881 ms/op 45.430 ms/op 1.03
getSlashingsAndExits - default max 108.39 us/op 66.532 us/op 1.63
getSlashingsAndExits - 2k 314.35 us/op 262.99 us/op 1.20
proposeBlockBody type=full, size=empty 7.0387 ms/op 5.1212 ms/op 1.37
isKnown best case - 1 super set check 349.00 ns/op 487.00 ns/op 0.72
isKnown normal case - 2 super set checks 336.00 ns/op 475.00 ns/op 0.71
isKnown worse case - 16 super set checks 351.00 ns/op 484.00 ns/op 0.73
InMemoryCheckpointStateCache - add get delete 3.3900 us/op 2.6380 us/op 1.29
updateUnfinalizedPubkeys - updating 10 pubkeys 1.4003 ms/op 769.93 us/op 1.82
updateUnfinalizedPubkeys - updating 100 pubkeys 3.8853 ms/op 2.6717 ms/op 1.45
updateUnfinalizedPubkeys - updating 1000 pubkeys 54.198 ms/op 37.144 ms/op 1.46
validate api signedAggregateAndProof - struct 1.5013 ms/op 1.6377 ms/op 0.92
validate gossip signedAggregateAndProof - struct 1.6474 ms/op 1.8466 ms/op 0.89
batch validate gossip attestation - vc 640000 - chunk 32 150.23 us/op 119.44 us/op 1.26
batch validate gossip attestation - vc 640000 - chunk 64 131.40 us/op 109.24 us/op 1.20
batch validate gossip attestation - vc 640000 - chunk 128 110.93 us/op 97.666 us/op 1.14
batch validate gossip attestation - vc 640000 - chunk 256 112.76 us/op 98.930 us/op 1.14
pickEth1Vote - no votes 1.1485 ms/op 810.00 us/op 1.42
pickEth1Vote - max votes 6.3107 ms/op 6.0047 ms/op 1.05
pickEth1Vote - Eth1Data hashTreeRoot value x2048 13.403 ms/op 14.956 ms/op 0.90
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.036 ms/op 19.626 ms/op 1.02
pickEth1Vote - Eth1Data fastSerialize value x2048 531.82 us/op 338.72 us/op 1.57
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.8138 ms/op 2.8227 ms/op 1.00
bytes32 toHexString 510.00 ns/op 575.00 ns/op 0.89
bytes32 Buffer.toString(hex) 277.00 ns/op 445.00 ns/op 0.62
bytes32 Buffer.toString(hex) from Uint8Array 410.00 ns/op 601.00 ns/op 0.68
bytes32 Buffer.toString(hex) + 0x 281.00 ns/op 430.00 ns/op 0.65
Object access 1 prop 0.14900 ns/op 0.34600 ns/op 0.43
Map access 1 prop 0.14400 ns/op 0.32000 ns/op 0.45
Object get x1000 6.6460 ns/op 4.9310 ns/op 1.35
Map get x1000 7.2940 ns/op 5.9940 ns/op 1.22
Object set x1000 36.026 ns/op 23.931 ns/op 1.51
Map set x1000 25.654 ns/op 20.538 ns/op 1.25
Return object 10000 times 0.30710 ns/op 0.29630 ns/op 1.04
Throw Error 10000 times 3.7111 us/op 2.6917 us/op 1.38
toHex 174.40 ns/op 118.02 ns/op 1.48
Buffer.from 155.80 ns/op 102.64 ns/op 1.52
shared Buffer 105.64 ns/op 69.423 ns/op 1.52
fastMsgIdFn sha256 / 200 bytes 2.5150 us/op 2.0200 us/op 1.25
fastMsgIdFn h32 xxhash / 200 bytes 280.00 ns/op 427.00 ns/op 0.66
fastMsgIdFn h64 xxhash / 200 bytes 294.00 ns/op 482.00 ns/op 0.61
fastMsgIdFn sha256 / 1000 bytes 8.2340 us/op 6.2890 us/op 1.31
fastMsgIdFn h32 xxhash / 1000 bytes 392.00 ns/op 553.00 ns/op 0.71
fastMsgIdFn h64 xxhash / 1000 bytes 371.00 ns/op 555.00 ns/op 0.67
fastMsgIdFn sha256 / 10000 bytes 70.350 us/op 51.220 us/op 1.37
fastMsgIdFn h32 xxhash / 10000 bytes 1.9620 us/op 2.0400 us/op 0.96
fastMsgIdFn h64 xxhash / 10000 bytes 1.2660 us/op 1.4340 us/op 0.88
send data - 1000 256B messages 13.676 ms/op 10.124 ms/op 1.35
send data - 1000 512B messages 18.801 ms/op 14.833 ms/op 1.27
send data - 1000 1024B messages 32.464 ms/op 23.068 ms/op 1.41
send data - 1000 1200B messages 26.785 ms/op 26.878 ms/op 1.00
send data - 1000 2048B messages 32.898 ms/op 31.553 ms/op 1.04
send data - 1000 4096B messages 34.085 ms/op 32.259 ms/op 1.06
send data - 1000 16384B messages 75.744 ms/op 68.878 ms/op 1.10
send data - 1000 65536B messages 229.37 ms/op 287.99 ms/op 0.80
enrSubnets - fastDeserialize 64 bits 1.1840 us/op 1.6320 us/op 0.73
enrSubnets - ssz BitVector 64 bits 375.00 ns/op 703.00 ns/op 0.53
enrSubnets - fastDeserialize 4 bits 178.00 ns/op 412.00 ns/op 0.43
enrSubnets - ssz BitVector 4 bits 388.00 ns/op 678.00 ns/op 0.57
prioritizePeers score -10:0 att 32-0.1 sync 2-0 193.71 us/op 173.49 us/op 1.12
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 163.05 us/op 154.81 us/op 1.05
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 305.57 us/op 281.50 us/op 1.09
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 470.75 us/op 482.35 us/op 0.98
prioritizePeers score 0:0 att 64-1 sync 4-1 786.20 us/op 845.93 us/op 0.93
array of 16000 items push then shift 1.7565 us/op 1.4011 us/op 1.25
LinkedList of 16000 items push then shift 7.8100 ns/op 7.8880 ns/op 0.99
array of 16000 items push then pop 143.36 ns/op 128.05 ns/op 1.12
LinkedList of 16000 items push then pop 7.7360 ns/op 8.5540 ns/op 0.90
array of 24000 items push then shift 2.6250 us/op 1.9791 us/op 1.33
LinkedList of 24000 items push then shift 7.8450 ns/op 7.5040 ns/op 1.05
array of 24000 items push then pop 188.72 ns/op 158.42 ns/op 1.19
LinkedList of 24000 items push then pop 7.4890 ns/op 6.7680 ns/op 1.11
intersect bitArray bitLen 8 6.6670 ns/op 5.5330 ns/op 1.20
intersect array and set length 8 49.733 ns/op 40.373 ns/op 1.23
intersect bitArray bitLen 128 30.570 ns/op 27.213 ns/op 1.12
intersect array and set length 128 769.51 ns/op 694.96 ns/op 1.11
bitArray.getTrueBitIndexes() bitLen 128 2.0850 us/op 2.3790 us/op 0.88
bitArray.getTrueBitIndexes() bitLen 248 4.2010 us/op 3.9300 us/op 1.07
bitArray.getTrueBitIndexes() bitLen 512 7.6950 us/op 8.4670 us/op 0.91
Buffer.concat 32 items 982.00 ns/op 1.1710 us/op 0.84
Uint8Array.set 32 items 1.5130 us/op 1.8110 us/op 0.84
Buffer.copy 1.7950 us/op 2.1230 us/op 0.85
Uint8Array.set - with subarray 2.9600 us/op 3.3890 us/op 0.87
Uint8Array.set - without subarray 1.5140 us/op 1.7920 us/op 0.84
getUint32 - dataview 252.00 ns/op 501.00 ns/op 0.50
getUint32 - manual 173.00 ns/op 479.00 ns/op 0.36
Set add up to 64 items then delete first 2.2929 us/op 2.6637 us/op 0.86
OrderedSet add up to 64 items then delete first 3.4991 us/op 4.0328 us/op 0.87
Set add up to 64 items then delete last 2.6278 us/op 2.3375 us/op 1.12
OrderedSet add up to 64 items then delete last 4.1583 us/op 3.4550 us/op 1.20
Set add up to 64 items then delete middle 2.6917 us/op 2.1907 us/op 1.23
OrderedSet add up to 64 items then delete middle 6.7906 us/op 5.3664 us/op 1.27
Set add up to 128 items then delete first 5.5512 us/op 4.4052 us/op 1.26
OrderedSet add up to 128 items then delete first 8.2875 us/op 9.9744 us/op 0.83
Set add up to 128 items then delete last 5.3869 us/op 6.0877 us/op 0.88
OrderedSet add up to 128 items then delete last 9.1903 us/op 10.112 us/op 0.91
Set add up to 128 items then delete middle 6.6278 us/op 6.0076 us/op 1.10
OrderedSet add up to 128 items then delete middle 17.305 us/op 15.798 us/op 1.10
Set add up to 256 items then delete first 11.899 us/op 12.734 us/op 0.93
OrderedSet add up to 256 items then delete first 17.728 us/op 20.890 us/op 0.85
Set add up to 256 items then delete last 11.974 us/op 11.087 us/op 1.08
OrderedSet add up to 256 items then delete last 17.973 us/op 20.084 us/op 0.89
Set add up to 256 items then delete middle 10.447 us/op 13.223 us/op 0.79
OrderedSet add up to 256 items then delete middle 46.656 us/op 43.320 us/op 1.08
transfer serialized Status (84 B) 1.4020 us/op 1.7650 us/op 0.79
copy serialized Status (84 B) 1.2780 us/op 1.5690 us/op 0.81
transfer serialized SignedVoluntaryExit (112 B) 1.5940 us/op 1.5430 us/op 1.03
copy serialized SignedVoluntaryExit (112 B) 1.2690 us/op 1.6630 us/op 0.76
transfer serialized ProposerSlashing (416 B) 1.8550 us/op 2.6430 us/op 0.70
copy serialized ProposerSlashing (416 B) 1.9300 us/op 2.5720 us/op 0.75
transfer serialized Attestation (485 B) 2.1690 us/op 2.9250 us/op 0.74
copy serialized Attestation (485 B) 2.1070 us/op 3.0340 us/op 0.69
transfer serialized AttesterSlashing (33232 B) 2.4320 us/op 3.0370 us/op 0.80
copy serialized AttesterSlashing (33232 B) 7.4750 us/op 8.2400 us/op 0.91
transfer serialized Small SignedBeaconBlock (128000 B) 3.3650 us/op 3.9470 us/op 0.85
copy serialized Small SignedBeaconBlock (128000 B) 20.314 us/op 14.128 us/op 1.44
transfer serialized Avg SignedBeaconBlock (200000 B) 3.9520 us/op 4.0120 us/op 0.99
copy serialized Avg SignedBeaconBlock (200000 B) 29.499 us/op 20.008 us/op 1.47
transfer serialized BlobsSidecar (524380 B) 3.4690 us/op 3.4770 us/op 1.00
copy serialized BlobsSidecar (524380 B) 89.329 us/op 166.00 us/op 0.54
transfer serialized Big SignedBeaconBlock (1000000 B) 3.3170 us/op 3.5850 us/op 0.93
copy serialized Big SignedBeaconBlock (1000000 B) 151.50 us/op 146.36 us/op 1.04
pass gossip attestations to forkchoice per slot 3.0015 ms/op 2.7218 ms/op 1.10
forkChoice updateHead vc 100000 bc 64 eq 0 488.51 us/op 468.73 us/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 0 3.0721 ms/op 2.2922 ms/op 1.34
forkChoice updateHead vc 1000000 bc 64 eq 0 5.1452 ms/op 4.3332 ms/op 1.19
forkChoice updateHead vc 600000 bc 320 eq 0 2.9450 ms/op 2.5071 ms/op 1.17
forkChoice updateHead vc 600000 bc 1200 eq 0 3.0054 ms/op 2.2865 ms/op 1.31
forkChoice updateHead vc 600000 bc 7200 eq 0 3.4864 ms/op 2.7771 ms/op 1.26
forkChoice updateHead vc 600000 bc 64 eq 1000 10.831 ms/op 9.7072 ms/op 1.12
forkChoice updateHead vc 600000 bc 64 eq 10000 10.749 ms/op 9.5595 ms/op 1.12
forkChoice updateHead vc 600000 bc 64 eq 300000 13.783 ms/op 11.877 ms/op 1.16
computeDeltas 500000 validators 300 proto nodes 4.1422 ms/op 3.3994 ms/op 1.22
computeDeltas 500000 validators 1200 proto nodes 4.2178 ms/op 3.3896 ms/op 1.24
computeDeltas 500000 validators 7200 proto nodes 4.2013 ms/op 3.4444 ms/op 1.22
computeDeltas 750000 validators 300 proto nodes 6.2584 ms/op 5.3366 ms/op 1.17
computeDeltas 750000 validators 1200 proto nodes 6.3634 ms/op 5.2180 ms/op 1.22
computeDeltas 750000 validators 7200 proto nodes 6.4316 ms/op 5.6602 ms/op 1.14
computeDeltas 1400000 validators 300 proto nodes 12.055 ms/op 9.5372 ms/op 1.26
computeDeltas 1400000 validators 1200 proto nodes 12.053 ms/op 9.9258 ms/op 1.21
computeDeltas 1400000 validators 7200 proto nodes 11.771 ms/op 9.1712 ms/op 1.28
computeDeltas 2100000 validators 300 proto nodes 19.499 ms/op 14.767 ms/op 1.32
computeDeltas 2100000 validators 1200 proto nodes 19.295 ms/op 14.965 ms/op 1.29
computeDeltas 2100000 validators 7200 proto nodes 18.317 ms/op 17.059 ms/op 1.07
altair processAttestation - 250000 vs - 7PWei normalcase 1.7547 ms/op 3.1098 ms/op 0.56
altair processAttestation - 250000 vs - 7PWei worstcase 2.7261 ms/op 3.8379 ms/op 0.71
altair processAttestation - setStatus - 1/6 committees join 97.773 us/op 85.747 us/op 1.14
altair processAttestation - setStatus - 1/3 committees join 182.91 us/op 152.47 us/op 1.20
altair processAttestation - setStatus - 1/2 committees join 250.70 us/op 212.35 us/op 1.18
altair processAttestation - setStatus - 2/3 committees join 351.74 us/op 292.64 us/op 1.20
altair processAttestation - setStatus - 4/5 committees join 508.47 us/op 420.42 us/op 1.21
altair processAttestation - setStatus - 100% committees join 679.09 us/op 517.37 us/op 1.31
altair processBlock - 250000 vs - 7PWei normalcase 4.7746 ms/op 4.3232 ms/op 1.10
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.095 ms/op 28.498 ms/op 1.02
altair processBlock - 250000 vs - 7PWei worstcase 47.244 ms/op 35.268 ms/op 1.34
altair processBlock - 250000 vs - 7PWei worstcase hashState 78.763 ms/op 75.456 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3813 ms/op 1.9614 ms/op 1.21
phase0 processBlock - 250000 vs - 7PWei worstcase 24.581 ms/op 24.352 ms/op 1.01
altair processEth1Data - 250000 vs - 7PWei normalcase 352.76 us/op 274.40 us/op 1.29
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.9620 us/op 6.2800 us/op 1.11
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 49.642 us/op 34.979 us/op 1.42
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 14.904 us/op 10.913 us/op 1.37
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.8270 us/op 6.2330 us/op 0.93
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 150.86 us/op 121.67 us/op 1.24
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.4240 ms/op 906.11 us/op 1.57
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9494 ms/op 1.3046 ms/op 1.49
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.2545 ms/op 1.2025 ms/op 1.87
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.8268 ms/op 3.1450 ms/op 1.22
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.6529 ms/op 1.3145 ms/op 1.26
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9042 ms/op 2.9156 ms/op 1.34
Tree 40 250000 create 229.63 ms/op 188.93 ms/op 1.22
Tree 40 250000 get(125000) 156.50 ns/op 120.44 ns/op 1.30
Tree 40 250000 set(125000) 731.10 ns/op 564.04 ns/op 1.30
Tree 40 250000 toArray() 17.124 ms/op 11.122 ms/op 1.54
Tree 40 250000 iterate all - toArray() + loop 15.635 ms/op 18.050 ms/op 0.87
Tree 40 250000 iterate all - get(i) 53.325 ms/op 50.179 ms/op 1.06
Array 250000 create 2.8994 ms/op 3.3149 ms/op 0.87
Array 250000 clone - spread 1.3791 ms/op 1.1508 ms/op 1.20
Array 250000 get(125000) 0.43300 ns/op 0.59900 ns/op 0.72
Array 250000 set(125000) 0.45200 ns/op 0.61700 ns/op 0.73
Array 250000 iterate all - loop 95.568 us/op 75.920 us/op 1.26
phase0 afterProcessEpoch - 250000 vs - 7PWei 50.897 ms/op 44.913 ms/op 1.13
Array.fill - length 1000000 3.5797 ms/op 2.5217 ms/op 1.42
Array push - length 1000000 17.179 ms/op 16.839 ms/op 1.02
Array.get 0.28928 ns/op 0.28022 ns/op 1.03
Uint8Array.get 0.46276 ns/op 0.35369 ns/op 1.31
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.995 ms/op 16.617 ms/op 0.96
altair processEpoch - mainnet_e81889 269.89 ms/op 273.52 ms/op 0.99
mainnet_e81889 - altair beforeProcessEpoch 19.328 ms/op 18.713 ms/op 1.03
mainnet_e81889 - altair processJustificationAndFinalization 11.692 us/op 14.820 us/op 0.79
mainnet_e81889 - altair processInactivityUpdates 5.0232 ms/op 4.9569 ms/op 1.01
mainnet_e81889 - altair processRewardsAndPenalties 49.905 ms/op 40.321 ms/op 1.24
mainnet_e81889 - altair processRegistryUpdates 1.9180 us/op 2.9580 us/op 0.65
mainnet_e81889 - altair processSlashings 705.00 ns/op 884.00 ns/op 0.80
mainnet_e81889 - altair processEth1DataReset 366.00 ns/op 716.00 ns/op 0.51
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.8204 ms/op 1.0724 ms/op 2.63
mainnet_e81889 - altair processSlashingsReset 2.7930 us/op 3.3490 us/op 0.83
mainnet_e81889 - altair processRandaoMixesReset 5.6800 us/op 7.7960 us/op 0.73
mainnet_e81889 - altair processHistoricalRootsUpdate 1.1190 us/op 1.1440 us/op 0.98
mainnet_e81889 - altair processParticipationFlagUpdates 4.1560 us/op 3.7810 us/op 1.10
mainnet_e81889 - altair processSyncCommitteeUpdates 888.00 ns/op 1.1250 us/op 0.79
mainnet_e81889 - altair afterProcessEpoch 57.550 ms/op 44.024 ms/op 1.31
capella processEpoch - mainnet_e217614 1.0182 s/op 958.01 ms/op 1.06
mainnet_e217614 - capella beforeProcessEpoch 67.799 ms/op 74.014 ms/op 0.92
mainnet_e217614 - capella processJustificationAndFinalization 18.261 us/op 15.128 us/op 1.21
mainnet_e217614 - capella processInactivityUpdates 17.327 ms/op 12.370 ms/op 1.40
mainnet_e217614 - capella processRewardsAndPenalties 264.75 ms/op 223.29 ms/op 1.19
mainnet_e217614 - capella processRegistryUpdates 20.365 us/op 16.203 us/op 1.26
mainnet_e217614 - capella processSlashings 622.00 ns/op 718.00 ns/op 0.87
mainnet_e217614 - capella processEth1DataReset 586.00 ns/op 689.00 ns/op 0.85
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.868 ms/op 17.412 ms/op 0.68
mainnet_e217614 - capella processSlashingsReset 5.8400 us/op 4.2710 us/op 1.37
mainnet_e217614 - capella processRandaoMixesReset 5.6870 us/op 3.5540 us/op 1.60
mainnet_e217614 - capella processHistoricalRootsUpdate 335.00 ns/op 783.00 ns/op 0.43
mainnet_e217614 - capella processParticipationFlagUpdates 3.9630 us/op 4.9300 us/op 0.80
mainnet_e217614 - capella afterProcessEpoch 129.02 ms/op 101.92 ms/op 1.27
phase0 processEpoch - mainnet_e58758 316.59 ms/op 318.46 ms/op 0.99
mainnet_e58758 - phase0 beforeProcessEpoch 71.760 ms/op 75.945 ms/op 0.94
mainnet_e58758 - phase0 processJustificationAndFinalization 14.988 us/op 14.346 us/op 1.04
mainnet_e58758 - phase0 processRewardsAndPenalties 32.685 ms/op 34.372 ms/op 0.95
mainnet_e58758 - phase0 processRegistryUpdates 8.0370 us/op 9.7730 us/op 0.82
mainnet_e58758 - phase0 processSlashings 311.00 ns/op 875.00 ns/op 0.36
mainnet_e58758 - phase0 processEth1DataReset 326.00 ns/op 650.00 ns/op 0.50
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.9652 ms/op 895.75 us/op 2.19
mainnet_e58758 - phase0 processSlashingsReset 3.5160 us/op 4.8960 us/op 0.72
mainnet_e58758 - phase0 processRandaoMixesReset 5.2820 us/op 3.8790 us/op 1.36
mainnet_e58758 - phase0 processHistoricalRootsUpdate 320.00 ns/op 679.00 ns/op 0.47
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.7620 us/op 3.7180 us/op 1.01
mainnet_e58758 - phase0 afterProcessEpoch 44.169 ms/op 37.269 ms/op 1.19
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.9403 ms/op 1.5079 ms/op 1.29
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.6126 ms/op 1.8730 ms/op 1.39
altair processInactivityUpdates - 250000 normalcase 17.706 ms/op 15.006 ms/op 1.18
altair processInactivityUpdates - 250000 worstcase 19.271 ms/op 14.820 ms/op 1.30
phase0 processRegistryUpdates - 250000 normalcase 8.1500 us/op 7.4890 us/op 1.09
phase0 processRegistryUpdates - 250000 badcase_full_deposits 346.74 us/op 321.41 us/op 1.08
phase0 processRegistryUpdates - 250000 worstcase 0.5 140.03 ms/op 97.721 ms/op 1.43
altair processRewardsAndPenalties - 250000 normalcase 44.456 ms/op 41.429 ms/op 1.07
altair processRewardsAndPenalties - 250000 worstcase 43.281 ms/op 45.572 ms/op 0.95
phase0 getAttestationDeltas - 250000 normalcase 8.1797 ms/op 7.1016 ms/op 1.15
phase0 getAttestationDeltas - 250000 worstcase 7.9592 ms/op 6.3466 ms/op 1.25
phase0 processSlashings - 250000 worstcase 104.16 us/op 90.863 us/op 1.15
altair processSyncCommitteeUpdates - 250000 140.74 ms/op 103.29 ms/op 1.36
BeaconState.hashTreeRoot - No change 233.00 ns/op 488.00 ns/op 0.48
BeaconState.hashTreeRoot - 1 full validator 136.54 us/op 143.81 us/op 0.95
BeaconState.hashTreeRoot - 32 full validator 1.1645 ms/op 1.4687 ms/op 0.79
BeaconState.hashTreeRoot - 512 full validator 11.483 ms/op 13.107 ms/op 0.88
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 127.44 us/op 165.70 us/op 0.77
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.7000 ms/op 1.5309 ms/op 1.11
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 22.755 ms/op 18.915 ms/op 1.20
BeaconState.hashTreeRoot - 1 balances 121.75 us/op 79.792 us/op 1.53
BeaconState.hashTreeRoot - 32 balances 1.2684 ms/op 888.21 us/op 1.43
BeaconState.hashTreeRoot - 512 balances 9.3197 ms/op 6.3621 ms/op 1.46
BeaconState.hashTreeRoot - 250000 balances 181.87 ms/op 148.24 ms/op 1.23
aggregationBits - 2048 els - zipIndexesInBitList 23.964 us/op 25.913 us/op 0.92
byteArrayEquals 32 56.399 ns/op 46.804 ns/op 1.21
Buffer.compare 32 18.227 ns/op 15.091 ns/op 1.21
byteArrayEquals 1024 1.6671 us/op 1.2439 us/op 1.34
Buffer.compare 1024 26.057 ns/op 23.524 ns/op 1.11
byteArrayEquals 16384 26.620 us/op 19.298 us/op 1.38
Buffer.compare 16384 216.26 ns/op 192.31 ns/op 1.12
byteArrayEquals 123687377 202.59 ms/op 150.62 ms/op 1.35
Buffer.compare 123687377 6.9740 ms/op 6.1462 ms/op 1.13
byteArrayEquals 32 - diff last byte 53.855 ns/op 47.054 ns/op 1.14
Buffer.compare 32 - diff last byte 17.618 ns/op 15.556 ns/op 1.13
byteArrayEquals 1024 - diff last byte 1.6297 us/op 1.2546 us/op 1.30
Buffer.compare 1024 - diff last byte 26.993 ns/op 22.589 ns/op 1.19
byteArrayEquals 16384 - diff last byte 25.774 us/op 19.888 us/op 1.30
Buffer.compare 16384 - diff last byte 210.76 ns/op 163.27 ns/op 1.29
byteArrayEquals 123687377 - diff last byte 195.39 ms/op 155.87 ms/op 1.25
Buffer.compare 123687377 - diff last byte 6.6577 ms/op 4.6257 ms/op 1.44
byteArrayEquals 32 - random bytes 5.4470 ns/op 4.9740 ns/op 1.10
Buffer.compare 32 - random bytes 18.378 ns/op 15.934 ns/op 1.15
byteArrayEquals 1024 - random bytes 5.3930 ns/op 4.9510 ns/op 1.09
Buffer.compare 1024 - random bytes 18.519 ns/op 15.749 ns/op 1.18
byteArrayEquals 16384 - random bytes 5.4060 ns/op 4.9790 ns/op 1.09
Buffer.compare 16384 - random bytes 18.436 ns/op 15.836 ns/op 1.16
byteArrayEquals 123687377 - random bytes 6.7500 ns/op 7.9200 ns/op 0.85
Buffer.compare 123687377 - random bytes 20.220 ns/op 19.110 ns/op 1.06
regular array get 100000 times 44.739 us/op 31.365 us/op 1.43
wrappedArray get 100000 times 34.089 us/op 31.841 us/op 1.07
arrayWithProxy get 100000 times 14.744 ms/op 10.864 ms/op 1.36
ssz.Root.equals 47.879 ns/op 46.658 ns/op 1.03
byteArrayEquals 47.079 ns/op 44.304 ns/op 1.06
Buffer.compare 10.819 ns/op 9.2470 ns/op 1.17
processSlot - 1 slots 16.365 us/op 13.997 us/op 1.17
processSlot - 32 slots 2.9201 ms/op 2.9144 ms/op 1.00
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 37.743 ms/op 39.306 ms/op 0.96
getCommitteeAssignments - req 1 vs - 250000 vc 2.3321 ms/op 1.7513 ms/op 1.33
getCommitteeAssignments - req 100 vs - 250000 vc 4.3140 ms/op 3.4305 ms/op 1.26
getCommitteeAssignments - req 1000 vs - 250000 vc 4.7950 ms/op 3.7524 ms/op 1.28
findModifiedValidators - 10000 modified validators 241.76 ms/op 250.08 ms/op 0.97
findModifiedValidators - 1000 modified validators 175.52 ms/op 190.38 ms/op 0.92
findModifiedValidators - 100 modified validators 172.43 ms/op 162.55 ms/op 1.06
findModifiedValidators - 10 modified validators 180.14 ms/op 215.01 ms/op 0.84
findModifiedValidators - 1 modified validators 162.25 ms/op 205.59 ms/op 0.79
findModifiedValidators - no difference 201.34 ms/op 175.70 ms/op 1.15
compare ViewDUs 3.3702 s/op 3.6231 s/op 0.93
compare each validator Uint8Array 1.5117 s/op 1.5702 s/op 0.96
compare ViewDU to Uint8Array 1.1668 s/op 694.49 ms/op 1.68
migrate state 1000000 validators, 24 modified, 0 new 743.61 ms/op 681.47 ms/op 1.09
migrate state 1000000 validators, 1700 modified, 1000 new 976.60 ms/op 961.27 ms/op 1.02
migrate state 1000000 validators, 3400 modified, 2000 new 1.2131 s/op 1.0132 s/op 1.20
migrate state 1500000 validators, 24 modified, 0 new 778.90 ms/op 699.03 ms/op 1.11
migrate state 1500000 validators, 1700 modified, 1000 new 1.0162 s/op 929.26 ms/op 1.09
migrate state 1500000 validators, 3400 modified, 2000 new 1.2453 s/op 1.1827 s/op 1.05
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.3000 ns/op 6.3200 ns/op 0.84
state getBlockRootAtSlot - 250000 vs - 7PWei 851.41 ns/op 404.56 ns/op 2.10
computeProposers - vc 250000 9.4175 ms/op 5.1837 ms/op 1.82
computeEpochShuffling - vc 250000 47.522 ms/op 34.454 ms/op 1.38
getNextSyncCommittee - vc 250000 135.96 ms/op 94.159 ms/op 1.44
computeSigningRoot for AttestationData 21.542 us/op 13.631 us/op 1.58
hash AttestationData serialized data then Buffer.toString(base64) 1.6270 us/op 1.1834 us/op 1.37
toHexString serialized data 976.35 ns/op 731.90 ns/op 1.33
Buffer.toString(base64) 186.26 ns/op 134.44 ns/op 1.39
nodejs block root to RootHex using toHex 159.56 ns/op 110.99 ns/op 1.44
nodejs block root to RootHex using toRootHex 101.24 ns/op 69.620 ns/op 1.45
browser block root to RootHex using the deprecated toHexString 244.75 ns/op 198.61 ns/op 1.23
browser block root to RootHex using toHex 197.23 ns/op 161.34 ns/op 1.22
browser block root to RootHex using toRootHex 178.48 ns/op 148.88 ns/op 1.20

by benchmarkbot/action

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.

1 participant