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

refactor: remove assumption of 3 intervals per slot #7067

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

Conversation

ensi321
Copy link
Contributor

@ensi321 ensi321 commented Sep 3, 2024

There are a lot of places in Lodestar codebase that assume 3 intervals per slot and thus hard code 3 when calculating seconds into the slot.

In preparation of ePBS, or future protocol upgrades that might potentially introduce more intervals per slot, we should refactor our codebase to remove such assumption.

  • Reword variable naming and comments such as one-third, two-third
  • Modify calculations that have 1 / 3, 2 / 3 hardcoded
  • Introduce enum SlotInterval to explicitly lay out what validator actions should happen at which interval

@ensi321 ensi321 requested a review from a team as a code owner September 3, 2024 07:26
Copy link

codecov bot commented Sep 17, 2024

Codecov Report

Attention: Patch coverage is 70.29703% with 30 lines in your changes missing coverage. Please review.

Project coverage is 50.93%. Comparing base (2fcecd6) to head (5916733).

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7067      +/-   ##
============================================
+ Coverage     50.90%   50.93%   +0.02%     
============================================
  Files           594      595       +1     
  Lines         39611    39676      +65     
  Branches       2248     2259      +11     
============================================
+ Hits          20163    20207      +44     
- Misses        19448    19469      +21     

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 03f054b Previous: 2fcecd6 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.9998 ms/op 1.9308 ms/op 1.04
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 47.408 us/op 44.186 us/op 1.07
BLS verify - blst 850.23 us/op 1.2248 ms/op 0.69
BLS verifyMultipleSignatures 3 - blst 1.2260 ms/op 1.3265 ms/op 0.92
BLS verifyMultipleSignatures 8 - blst 1.6627 ms/op 2.5179 ms/op 0.66
BLS verifyMultipleSignatures 32 - blst 4.7742 ms/op 6.0753 ms/op 0.79
BLS verifyMultipleSignatures 64 - blst 9.1566 ms/op 10.553 ms/op 0.87
BLS verifyMultipleSignatures 128 - blst 17.140 ms/op 16.899 ms/op 1.01
BLS deserializing 10000 signatures 674.27 ms/op 671.68 ms/op 1.00
BLS deserializing 100000 signatures 6.7229 s/op 6.7229 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 854.22 us/op 1.0610 ms/op 0.81
BLS verifyMultipleSignatures - same message - 8 - blst 1.0383 ms/op 1.2710 ms/op 0.82
BLS verifyMultipleSignatures - same message - 32 - blst 1.6938 ms/op 1.7682 ms/op 0.96
BLS verifyMultipleSignatures - same message - 64 - blst 2.6284 ms/op 2.6735 ms/op 0.98
BLS verifyMultipleSignatures - same message - 128 - blst 4.3605 ms/op 4.2864 ms/op 1.02
BLS aggregatePubkeys 32 - blst 19.538 us/op 19.985 us/op 0.98
BLS aggregatePubkeys 128 - blst 70.650 us/op 71.136 us/op 0.99
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 64.477 ms/op 69.193 ms/op 0.93
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 46.461 ms/op 63.443 ms/op 0.73
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 31.754 ms/op 43.337 ms/op 0.73
getSlashingsAndExits - default max 75.459 us/op 192.50 us/op 0.39
getSlashingsAndExits - 2k 246.96 us/op 393.83 us/op 0.63
proposeBlockBody type=full, size=empty 5.6884 ms/op 7.4693 ms/op 0.76
isKnown best case - 1 super set check 288.00 ns/op 849.00 ns/op 0.34
isKnown normal case - 2 super set checks 273.00 ns/op 708.00 ns/op 0.39
isKnown worse case - 16 super set checks 275.00 ns/op 669.00 ns/op 0.41
InMemoryCheckpointStateCache - add get delete 2.7960 us/op 4.8210 us/op 0.58
updateUnfinalizedPubkeys - updating 10 pubkeys 714.60 us/op 2.1127 ms/op 0.34
updateUnfinalizedPubkeys - updating 100 pubkeys 3.2045 ms/op 6.1066 ms/op 0.52
updateUnfinalizedPubkeys - updating 1000 pubkeys 49.316 ms/op 71.215 ms/op 0.69
validate api signedAggregateAndProof - struct 1.3848 ms/op 2.0086 ms/op 0.69
validate gossip signedAggregateAndProof - struct 1.3490 ms/op 1.8446 ms/op 0.73
validate gossip attestation - vc 640000 857.87 us/op 1.2132 ms/op 0.71
batch validate gossip attestation - vc 640000 - chunk 32 120.85 us/op 163.21 us/op 0.74
batch validate gossip attestation - vc 640000 - chunk 64 106.68 us/op 139.88 us/op 0.76
batch validate gossip attestation - vc 640000 - chunk 128 107.84 us/op 124.17 us/op 0.87
batch validate gossip attestation - vc 640000 - chunk 256 100.67 us/op 125.00 us/op 0.81
pickEth1Vote - no votes 1.0286 ms/op 1.3157 ms/op 0.78
pickEth1Vote - max votes 5.6556 ms/op 9.4276 ms/op 0.60
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.454 ms/op 16.634 ms/op 0.87
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.690 ms/op 25.343 ms/op 0.78
pickEth1Vote - Eth1Data fastSerialize value x2048 458.84 us/op 604.11 us/op 0.76
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.0521 ms/op 4.9951 ms/op 0.61
bytes32 toHexString 419.00 ns/op 660.00 ns/op 0.63
bytes32 Buffer.toString(hex) 253.00 ns/op 287.00 ns/op 0.88
bytes32 Buffer.toString(hex) from Uint8Array 435.00 ns/op 505.00 ns/op 0.86
bytes32 Buffer.toString(hex) + 0x 264.00 ns/op 292.00 ns/op 0.90
Object access 1 prop 0.13600 ns/op 0.20500 ns/op 0.66
Map access 1 prop 0.13400 ns/op 0.15500 ns/op 0.86
Object get x1000 6.0260 ns/op 6.7940 ns/op 0.89
Map get x1000 6.4050 ns/op 6.9450 ns/op 0.92
Object set x1000 33.316 ns/op 50.896 ns/op 0.65
Map set x1000 21.870 ns/op 35.617 ns/op 0.61
Return object 10000 times 0.28720 ns/op 0.32360 ns/op 0.89
Throw Error 10000 times 3.3478 us/op 3.5976 us/op 0.93
toHex 141.04 ns/op 180.51 ns/op 0.78
Buffer.from 131.44 ns/op 167.06 ns/op 0.79
shared Buffer 91.494 ns/op 102.08 ns/op 0.90
fastMsgIdFn sha256 / 200 bytes 2.2640 us/op 2.5470 us/op 0.89
fastMsgIdFn h32 xxhash / 200 bytes 223.00 ns/op 288.00 ns/op 0.77
fastMsgIdFn h64 xxhash / 200 bytes 273.00 ns/op 296.00 ns/op 0.92
fastMsgIdFn sha256 / 1000 bytes 7.5260 us/op 7.9310 us/op 0.95
fastMsgIdFn h32 xxhash / 1000 bytes 358.00 ns/op 445.00 ns/op 0.80
fastMsgIdFn h64 xxhash / 1000 bytes 345.00 ns/op 361.00 ns/op 0.96
fastMsgIdFn sha256 / 10000 bytes 64.111 us/op 68.626 us/op 0.93
fastMsgIdFn h32 xxhash / 10000 bytes 1.8420 us/op 1.9960 us/op 0.92
fastMsgIdFn h64 xxhash / 10000 bytes 1.1940 us/op 1.2950 us/op 0.92
send data - 1000 256B messages 12.054 ms/op 15.236 ms/op 0.79
send data - 1000 512B messages 15.868 ms/op 18.436 ms/op 0.86
send data - 1000 1024B messages 24.823 ms/op 30.959 ms/op 0.80
send data - 1000 1200B messages 25.289 ms/op 32.995 ms/op 0.77
send data - 1000 2048B messages 29.407 ms/op 33.666 ms/op 0.87
send data - 1000 4096B messages 33.085 ms/op 35.137 ms/op 0.94
send data - 1000 16384B messages 74.028 ms/op 88.291 ms/op 0.84
send data - 1000 65536B messages 205.13 ms/op 243.52 ms/op 0.84
enrSubnets - fastDeserialize 64 bits 1.0800 us/op 1.5350 us/op 0.70
enrSubnets - ssz BitVector 64 bits 347.00 ns/op 475.00 ns/op 0.73
enrSubnets - fastDeserialize 4 bits 144.00 ns/op 246.00 ns/op 0.59
enrSubnets - ssz BitVector 4 bits 352.00 ns/op 535.00 ns/op 0.66
prioritizePeers score -10:0 att 32-0.1 sync 2-0 141.25 us/op 226.66 us/op 0.62
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 168.86 us/op 237.72 us/op 0.71
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 233.33 us/op 346.67 us/op 0.67
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 392.94 us/op 587.18 us/op 0.67
prioritizePeers score 0:0 att 64-1 sync 4-1 580.28 us/op 1.0862 ms/op 0.53
array of 16000 items push then shift 1.5722 us/op 1.8693 us/op 0.84
LinkedList of 16000 items push then shift 7.0710 ns/op 10.818 ns/op 0.65
array of 16000 items push then pop 75.707 ns/op 155.68 ns/op 0.49
LinkedList of 16000 items push then pop 6.9290 ns/op 9.4240 ns/op 0.74
array of 24000 items push then shift 2.3912 us/op 2.8893 us/op 0.83
LinkedList of 24000 items push then shift 6.9130 ns/op 10.100 ns/op 0.68
array of 24000 items push then pop 153.25 ns/op 211.81 ns/op 0.72
LinkedList of 24000 items push then pop 6.7860 ns/op 11.226 ns/op 0.60
intersect bitArray bitLen 8 6.3060 ns/op 8.4790 ns/op 0.74
intersect array and set length 8 45.386 ns/op 92.370 ns/op 0.49
intersect bitArray bitLen 128 29.182 ns/op 36.395 ns/op 0.80
intersect array and set length 128 648.90 ns/op 1.0508 us/op 0.62
bitArray.getTrueBitIndexes() bitLen 128 1.7930 us/op 3.0080 us/op 0.60
bitArray.getTrueBitIndexes() bitLen 248 3.1930 us/op 4.9820 us/op 0.64
bitArray.getTrueBitIndexes() bitLen 512 5.8730 us/op 10.207 us/op 0.58
Buffer.concat 32 items 889.00 ns/op 1.1460 us/op 0.78
Uint8Array.set 32 items 1.4280 us/op 1.8770 us/op 0.76
Buffer.copy 1.8550 us/op 2.1640 us/op 0.86
Uint8Array.set - with subarray 3.0610 us/op 3.6090 us/op 0.85
Uint8Array.set - without subarray 1.4280 us/op 1.8990 us/op 0.75
getUint32 - dataview 227.00 ns/op 317.00 ns/op 0.72
getUint32 - manual 150.00 ns/op 285.00 ns/op 0.53
Set add up to 64 items then delete first 2.2566 us/op 3.1870 us/op 0.71
OrderedSet add up to 64 items then delete first 3.3711 us/op 5.2073 us/op 0.65
Set add up to 64 items then delete last 2.5398 us/op 3.9774 us/op 0.64
OrderedSet add up to 64 items then delete last 3.6579 us/op 5.7356 us/op 0.64
Set add up to 64 items then delete middle 2.5517 us/op 3.5122 us/op 0.73
OrderedSet add up to 64 items then delete middle 5.3524 us/op 7.3252 us/op 0.73
Set add up to 128 items then delete first 5.3452 us/op 7.2275 us/op 0.74
OrderedSet add up to 128 items then delete first 8.1282 us/op 11.380 us/op 0.71
Set add up to 128 items then delete last 5.0299 us/op 7.1865 us/op 0.70
OrderedSet add up to 128 items then delete last 7.4112 us/op 11.360 us/op 0.65
Set add up to 128 items then delete middle 5.0944 us/op 7.3924 us/op 0.69
OrderedSet add up to 128 items then delete middle 13.566 us/op 19.487 us/op 0.70
Set add up to 256 items then delete first 10.145 us/op 14.445 us/op 0.70
OrderedSet add up to 256 items then delete first 16.186 us/op 23.317 us/op 0.69
Set add up to 256 items then delete last 9.7713 us/op 14.904 us/op 0.66
OrderedSet add up to 256 items then delete last 14.570 us/op 23.182 us/op 0.63
Set add up to 256 items then delete middle 9.6352 us/op 14.290 us/op 0.67
OrderedSet add up to 256 items then delete middle 43.661 us/op 51.318 us/op 0.85
transfer serialized Status (84 B) 1.5130 us/op 1.5930 us/op 0.95
copy serialized Status (84 B) 1.3090 us/op 1.5760 us/op 0.83
transfer serialized SignedVoluntaryExit (112 B) 1.6830 us/op 1.6440 us/op 1.02
copy serialized SignedVoluntaryExit (112 B) 1.3500 us/op 1.4270 us/op 0.95
transfer serialized ProposerSlashing (416 B) 2.4960 us/op 2.3020 us/op 1.08
copy serialized ProposerSlashing (416 B) 2.0350 us/op 2.1430 us/op 0.95
transfer serialized Attestation (485 B) 2.2320 us/op 2.0910 us/op 1.07
copy serialized Attestation (485 B) 2.3380 us/op 2.1160 us/op 1.10
transfer serialized AttesterSlashing (33232 B) 2.1040 us/op 2.9100 us/op 0.72
copy serialized AttesterSlashing (33232 B) 5.9050 us/op 9.1610 us/op 0.64
transfer serialized Small SignedBeaconBlock (128000 B) 2.9040 us/op 3.0430 us/op 0.95
copy serialized Small SignedBeaconBlock (128000 B) 17.894 us/op 28.348 us/op 0.63
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6210 us/op 3.8380 us/op 0.94
copy serialized Avg SignedBeaconBlock (200000 B) 31.501 us/op 41.740 us/op 0.75
transfer serialized BlobsSidecar (524380 B) 3.8120 us/op 4.5760 us/op 0.83
copy serialized BlobsSidecar (524380 B) 85.460 us/op 132.17 us/op 0.65
transfer serialized Big SignedBeaconBlock (1000000 B) 4.4970 us/op 5.4080 us/op 0.83
copy serialized Big SignedBeaconBlock (1000000 B) 187.50 us/op 316.72 us/op 0.59
pass gossip attestations to forkchoice per slot 3.5869 ms/op 3.2762 ms/op 1.09
forkChoice updateHead vc 100000 bc 64 eq 0 497.69 us/op 811.30 us/op 0.61
forkChoice updateHead vc 600000 bc 64 eq 0 3.3070 ms/op 3.7667 ms/op 0.88
forkChoice updateHead vc 1000000 bc 64 eq 0 5.4875 ms/op 9.2597 ms/op 0.59
forkChoice updateHead vc 600000 bc 320 eq 0 3.1400 ms/op 4.0927 ms/op 0.77
forkChoice updateHead vc 600000 bc 1200 eq 0 3.2429 ms/op 3.9074 ms/op 0.83
forkChoice updateHead vc 600000 bc 7200 eq 0 4.3629 ms/op 4.8624 ms/op 0.90
forkChoice updateHead vc 600000 bc 64 eq 1000 10.990 ms/op 14.084 ms/op 0.78
forkChoice updateHead vc 600000 bc 64 eq 10000 11.153 ms/op 13.517 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 300000 15.091 ms/op 22.125 ms/op 0.68
computeDeltas 500000 validators 300 proto nodes 3.7220 ms/op 4.8264 ms/op 0.77
computeDeltas 500000 validators 1200 proto nodes 3.7519 ms/op 4.5687 ms/op 0.82
computeDeltas 500000 validators 7200 proto nodes 3.9968 ms/op 3.7978 ms/op 1.05
computeDeltas 750000 validators 300 proto nodes 5.6207 ms/op 5.4425 ms/op 1.03
computeDeltas 750000 validators 1200 proto nodes 5.6238 ms/op 5.3917 ms/op 1.04
computeDeltas 750000 validators 7200 proto nodes 5.5129 ms/op 5.1939 ms/op 1.06
computeDeltas 1400000 validators 300 proto nodes 10.528 ms/op 9.8673 ms/op 1.07
computeDeltas 1400000 validators 1200 proto nodes 10.692 ms/op 9.9183 ms/op 1.08
computeDeltas 1400000 validators 7200 proto nodes 10.909 ms/op 10.023 ms/op 1.09
computeDeltas 2100000 validators 300 proto nodes 15.768 ms/op 14.974 ms/op 1.05
computeDeltas 2100000 validators 1200 proto nodes 16.329 ms/op 14.864 ms/op 1.10
computeDeltas 2100000 validators 7200 proto nodes 17.655 ms/op 15.111 ms/op 1.17
altair processAttestation - 250000 vs - 7PWei normalcase 3.9895 ms/op 2.3009 ms/op 1.73
altair processAttestation - 250000 vs - 7PWei worstcase 3.4796 ms/op 3.2154 ms/op 1.08
altair processAttestation - setStatus - 1/6 committees join 89.869 us/op 100.39 us/op 0.90
altair processAttestation - setStatus - 1/3 committees join 438.76 us/op 195.53 us/op 2.24
altair processAttestation - setStatus - 1/2 committees join 269.48 us/op 262.93 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 556.94 us/op 336.15 us/op 1.66
altair processAttestation - setStatus - 4/5 committees join 541.40 us/op 531.22 us/op 1.02
altair processAttestation - setStatus - 100% committees join 571.85 us/op 593.14 us/op 0.96
altair processBlock - 250000 vs - 7PWei normalcase 6.5159 ms/op 5.3779 ms/op 1.21
altair processBlock - 250000 vs - 7PWei normalcase hashState 24.674 ms/op 27.416 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase 35.682 ms/op 41.602 ms/op 0.86
altair processBlock - 250000 vs - 7PWei worstcase hashState 72.149 ms/op 84.104 ms/op 0.86
phase0 processBlock - 250000 vs - 7PWei normalcase 1.7551 ms/op 2.3668 ms/op 0.74
phase0 processBlock - 250000 vs - 7PWei worstcase 21.082 ms/op 26.837 ms/op 0.79
altair processEth1Data - 250000 vs - 7PWei normalcase 339.09 us/op 415.13 us/op 0.82
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.0900 us/op 9.5170 us/op 0.53
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 34.691 us/op 58.415 us/op 0.59
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 11.608 us/op 13.790 us/op 0.84
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.2640 us/op 8.2180 us/op 0.88
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 166.78 us/op 202.04 us/op 0.83
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.1705 ms/op 1.4789 ms/op 0.79
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6161 ms/op 1.6812 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.6034 ms/op 2.0801 ms/op 0.77
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.0158 ms/op 4.7226 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.6301 ms/op 1.9605 ms/op 0.83
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9572 ms/op 4.5128 ms/op 0.88
Tree 40 250000 create 264.71 ms/op 286.16 ms/op 0.93
Tree 40 250000 get(125000) 166.41 ns/op 163.82 ns/op 1.02
Tree 40 250000 set(125000) 711.07 ns/op 784.44 ns/op 0.91
Tree 40 250000 toArray() 15.978 ms/op 20.612 ms/op 0.78
Tree 40 250000 iterate all - toArray() + loop 16.477 ms/op 20.644 ms/op 0.80
Tree 40 250000 iterate all - get(i) 55.819 ms/op 59.311 ms/op 0.94
Array 250000 create 3.1407 ms/op 3.8144 ms/op 0.82
Array 250000 clone - spread 1.6052 ms/op 1.6366 ms/op 0.98
Array 250000 get(125000) 0.41900 ns/op 0.43600 ns/op 0.96
Array 250000 set(125000) 0.45000 ns/op 0.46100 ns/op 0.98
Array 250000 iterate all - loop 83.714 us/op 108.20 us/op 0.77
phase0 afterProcessEpoch - 250000 vs - 7PWei 91.122 ms/op 95.892 ms/op 0.95
Array.fill - length 1000000 3.5223 ms/op 4.6831 ms/op 0.75
Array push - length 1000000 18.491 ms/op 21.599 ms/op 0.86
Array.get 0.29551 ns/op 0.31086 ns/op 0.95
Uint8Array.get 0.44862 ns/op 0.44734 ns/op 1.00
phase0 beforeProcessEpoch - 250000 vs - 7PWei 18.042 ms/op 16.947 ms/op 1.06
altair processEpoch - mainnet_e81889 346.78 ms/op 319.57 ms/op 1.09
mainnet_e81889 - altair beforeProcessEpoch 19.856 ms/op 18.256 ms/op 1.09
mainnet_e81889 - altair processJustificationAndFinalization 13.792 us/op 11.569 us/op 1.19
mainnet_e81889 - altair processInactivityUpdates 6.0933 ms/op 6.1401 ms/op 0.99
mainnet_e81889 - altair processRewardsAndPenalties 45.662 ms/op 50.945 ms/op 0.90
mainnet_e81889 - altair processRegistryUpdates 1.8910 us/op 2.1410 us/op 0.88
mainnet_e81889 - altair processSlashings 417.00 ns/op 664.00 ns/op 0.63
mainnet_e81889 - altair processEth1DataReset 338.00 ns/op 958.00 ns/op 0.35
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.9341 ms/op 2.3380 ms/op 0.83
mainnet_e81889 - altair processSlashingsReset 2.9000 us/op 3.7210 us/op 0.78
mainnet_e81889 - altair processRandaoMixesReset 4.3800 us/op 5.3710 us/op 0.82
mainnet_e81889 - altair processHistoricalRootsUpdate 623.00 ns/op 751.00 ns/op 0.83
mainnet_e81889 - altair processParticipationFlagUpdates 1.9010 us/op 2.5180 us/op 0.75
mainnet_e81889 - altair processSyncCommitteeUpdates 446.00 ns/op 492.00 ns/op 0.91
mainnet_e81889 - altair afterProcessEpoch 96.397 ms/op 99.988 ms/op 0.96
capella processEpoch - mainnet_e217614 1.1513 s/op 1.4282 s/op 0.81
mainnet_e217614 - capella beforeProcessEpoch 67.656 ms/op 85.657 ms/op 0.79
mainnet_e217614 - capella processJustificationAndFinalization 17.086 us/op 24.267 us/op 0.70
mainnet_e217614 - capella processInactivityUpdates 18.805 ms/op 19.964 ms/op 0.94
mainnet_e217614 - capella processRewardsAndPenalties 235.37 ms/op 262.46 ms/op 0.90
mainnet_e217614 - capella processRegistryUpdates 13.047 us/op 15.262 us/op 0.85
mainnet_e217614 - capella processSlashings 398.00 ns/op 467.00 ns/op 0.85
mainnet_e217614 - capella processEth1DataReset 408.00 ns/op 293.00 ns/op 1.39
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.909 ms/op 16.742 ms/op 0.71
mainnet_e217614 - capella processSlashingsReset 3.7300 us/op 7.7700 us/op 0.48
mainnet_e217614 - capella processRandaoMixesReset 5.3140 us/op 7.6730 us/op 0.69
mainnet_e217614 - capella processHistoricalRootsUpdate 487.00 ns/op 593.00 ns/op 0.82
mainnet_e217614 - capella processParticipationFlagUpdates 2.0630 us/op 3.1160 us/op 0.66
mainnet_e217614 - capella afterProcessEpoch 242.18 ms/op 280.90 ms/op 0.86
phase0 processEpoch - mainnet_e58758 306.81 ms/op 426.96 ms/op 0.72
mainnet_e58758 - phase0 beforeProcessEpoch 81.154 ms/op 78.788 ms/op 1.03
mainnet_e58758 - phase0 processJustificationAndFinalization 19.502 us/op 19.398 us/op 1.01
mainnet_e58758 - phase0 processRewardsAndPenalties 30.802 ms/op 30.073 ms/op 1.02
mainnet_e58758 - phase0 processRegistryUpdates 7.1860 us/op 8.0650 us/op 0.89
mainnet_e58758 - phase0 processSlashings 315.00 ns/op 430.00 ns/op 0.73
mainnet_e58758 - phase0 processEth1DataReset 309.00 ns/op 350.00 ns/op 0.88
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2263 ms/op 1.3577 ms/op 0.90
mainnet_e58758 - phase0 processSlashingsReset 4.2120 us/op 3.6720 us/op 1.15
mainnet_e58758 - phase0 processRandaoMixesReset 5.7310 us/op 6.1800 us/op 0.93
mainnet_e58758 - phase0 processHistoricalRootsUpdate 509.00 ns/op 556.00 ns/op 0.92
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.8000 us/op 3.6470 us/op 1.04
mainnet_e58758 - phase0 afterProcessEpoch 77.833 ms/op 86.822 ms/op 0.90
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4386 ms/op 1.4368 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.3170 ms/op 3.4629 ms/op 0.67
altair processInactivityUpdates - 250000 normalcase 16.833 ms/op 19.677 ms/op 0.86
altair processInactivityUpdates - 250000 worstcase 16.936 ms/op 19.280 ms/op 0.88
phase0 processRegistryUpdates - 250000 normalcase 6.7490 us/op 8.4990 us/op 0.79
phase0 processRegistryUpdates - 250000 badcase_full_deposits 317.74 us/op 377.52 us/op 0.84
phase0 processRegistryUpdates - 250000 worstcase 0.5 110.46 ms/op 130.00 ms/op 0.85
altair processRewardsAndPenalties - 250000 normalcase 43.771 ms/op 40.003 ms/op 1.09
altair processRewardsAndPenalties - 250000 worstcase 38.112 ms/op 46.184 ms/op 0.83
phase0 getAttestationDeltas - 250000 normalcase 7.6163 ms/op 8.0297 ms/op 0.95
phase0 getAttestationDeltas - 250000 worstcase 7.3554 ms/op 8.2718 ms/op 0.89
phase0 processSlashings - 250000 worstcase 76.574 us/op 112.07 us/op 0.68
altair processSyncCommitteeUpdates - 250000 119.48 ms/op 132.84 ms/op 0.90
BeaconState.hashTreeRoot - No change 324.00 ns/op 337.00 ns/op 0.96
BeaconState.hashTreeRoot - 1 full validator 116.30 us/op 103.33 us/op 1.13
BeaconState.hashTreeRoot - 32 full validator 1.1234 ms/op 1.2287 ms/op 0.91
BeaconState.hashTreeRoot - 512 full validator 13.145 ms/op 13.786 ms/op 0.95
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 123.50 us/op 142.71 us/op 0.87
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.7288 ms/op 1.9023 ms/op 0.91
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.002 ms/op 26.388 ms/op 0.87
BeaconState.hashTreeRoot - 1 balances 93.828 us/op 87.997 us/op 1.07
BeaconState.hashTreeRoot - 32 balances 911.26 us/op 866.69 us/op 1.05
BeaconState.hashTreeRoot - 512 balances 8.7973 ms/op 14.264 ms/op 0.62
BeaconState.hashTreeRoot - 250000 balances 177.72 ms/op 319.04 ms/op 0.56
aggregationBits - 2048 els - zipIndexesInBitList 48.850 us/op 47.528 us/op 1.03
byteArrayEquals 32 54.543 ns/op 66.414 ns/op 0.82
Buffer.compare 32 17.179 ns/op 20.003 ns/op 0.86
byteArrayEquals 1024 1.5813 us/op 1.7575 us/op 0.90
Buffer.compare 1024 25.558 ns/op 26.780 ns/op 0.95
byteArrayEquals 16384 25.272 us/op 27.317 us/op 0.93
Buffer.compare 16384 176.44 ns/op 205.57 ns/op 0.86
byteArrayEquals 123687377 193.30 ms/op 201.91 ms/op 0.96
Buffer.compare 123687377 6.7246 ms/op 8.0454 ms/op 0.84
byteArrayEquals 32 - diff last byte 53.020 ns/op 53.441 ns/op 0.99
Buffer.compare 32 - diff last byte 17.384 ns/op 17.959 ns/op 0.97
byteArrayEquals 1024 - diff last byte 1.6007 us/op 1.6376 us/op 0.98
Buffer.compare 1024 - diff last byte 25.283 ns/op 28.197 ns/op 0.90
byteArrayEquals 16384 - diff last byte 25.447 us/op 25.716 us/op 0.99
Buffer.compare 16384 - diff last byte 201.84 ns/op 199.41 ns/op 1.01
byteArrayEquals 123687377 - diff last byte 192.03 ms/op 193.22 ms/op 0.99
Buffer.compare 123687377 - diff last byte 6.3144 ms/op 7.9196 ms/op 0.80
byteArrayEquals 32 - random bytes 5.1850 ns/op 5.2410 ns/op 0.99
Buffer.compare 32 - random bytes 17.275 ns/op 17.319 ns/op 1.00
byteArrayEquals 1024 - random bytes 5.1630 ns/op 5.2380 ns/op 0.99
Buffer.compare 1024 - random bytes 17.240 ns/op 17.303 ns/op 1.00
byteArrayEquals 16384 - random bytes 5.1670 ns/op 5.2410 ns/op 0.99
Buffer.compare 16384 - random bytes 17.346 ns/op 17.332 ns/op 1.00
byteArrayEquals 123687377 - random bytes 6.3400 ns/op 6.5300 ns/op 0.97
Buffer.compare 123687377 - random bytes 18.520 ns/op 18.880 ns/op 0.98
regular array get 100000 times 40.378 us/op 43.603 us/op 0.93
wrappedArray get 100000 times 34.576 us/op 33.722 us/op 1.03
arrayWithProxy get 100000 times 13.501 ms/op 14.421 ms/op 0.94
ssz.Root.equals 46.073 ns/op 46.964 ns/op 0.98
byteArrayEquals 45.672 ns/op 46.026 ns/op 0.99
Buffer.compare 10.458 ns/op 10.674 ns/op 0.98
shuffle list - 16384 els 6.2539 ms/op 6.3934 ms/op 0.98
shuffle list - 250000 els 90.360 ms/op 93.979 ms/op 0.96
processSlot - 1 slots 15.202 us/op 12.448 us/op 1.22
processSlot - 32 slots 3.0177 ms/op 2.3705 ms/op 1.27
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 37.457 ms/op 39.139 ms/op 0.96
getCommitteeAssignments - req 1 vs - 250000 vc 2.1777 ms/op 2.1472 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 4.1740 ms/op 4.0865 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4473 ms/op 4.4462 ms/op 1.00
findModifiedValidators - 10000 modified validators 242.22 ms/op 257.97 ms/op 0.94
findModifiedValidators - 1000 modified validators 173.01 ms/op 187.87 ms/op 0.92
findModifiedValidators - 100 modified validators 172.63 ms/op 149.67 ms/op 1.15
findModifiedValidators - 10 modified validators 155.61 ms/op 163.40 ms/op 0.95
findModifiedValidators - 1 modified validators 161.41 ms/op 159.99 ms/op 1.01
findModifiedValidators - no difference 170.65 ms/op 171.56 ms/op 0.99
compare ViewDUs 2.7567 s/op 3.1683 s/op 0.87
compare each validator Uint8Array 1.4546 s/op 1.1089 s/op 1.31
compare ViewDU to Uint8Array 975.31 ms/op 955.50 ms/op 1.02
migrate state 1000000 validators, 24 modified, 0 new 573.96 ms/op 559.69 ms/op 1.03
migrate state 1000000 validators, 1700 modified, 1000 new 819.24 ms/op 745.32 ms/op 1.10
migrate state 1000000 validators, 3400 modified, 2000 new 1.0270 s/op 1.0896 s/op 0.94
migrate state 1500000 validators, 24 modified, 0 new 562.25 ms/op 595.73 ms/op 0.94
migrate state 1500000 validators, 1700 modified, 1000 new 762.15 ms/op 826.16 ms/op 0.92
migrate state 1500000 validators, 3400 modified, 2000 new 1.0018 s/op 952.94 ms/op 1.05
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.6000 ns/op 4.8100 ns/op 0.96
state getBlockRootAtSlot - 250000 vs - 7PWei 899.73 ns/op 477.70 ns/op 1.88
computeProposers - vc 250000 8.6167 ms/op 7.2697 ms/op 1.19
computeEpochShuffling - vc 250000 89.343 ms/op 92.940 ms/op 0.96
getNextSyncCommittee - vc 250000 138.07 ms/op 118.66 ms/op 1.16
computeSigningRoot for AttestationData 20.523 us/op 24.433 us/op 0.84
hash AttestationData serialized data then Buffer.toString(base64) 1.5703 us/op 1.5296 us/op 1.03
toHexString serialized data 884.85 ns/op 891.98 ns/op 0.99
Buffer.toString(base64) 184.79 ns/op 181.19 ns/op 1.02
nodejs block root to RootHex using toHex 154.51 ns/op 162.10 ns/op 0.95
nodejs block root to RootHex using toRootHex 96.338 ns/op 97.682 ns/op 0.99
browser block root to RootHex using the deprecated toHexString 235.53 ns/op 234.72 ns/op 1.00
browser block root to RootHex using toHex 185.78 ns/op 184.51 ns/op 1.01
browser block root to RootHex using toRootHex 164.63 ns/op 160.30 ns/op 1.03

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