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

chore: improve type safety of CLI args #6438

Merged
merged 1 commit into from
Feb 16, 2024
Merged

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Feb 16, 2024

Motivation

Closes #6404

Description

Ensure type property matches ts type of option. This guarantees that the value of the parsed CLI arg matches with the type / value we expect in the code and avoids issue such as #6403.

@nflaig nflaig requested a review from a team as a code owner February 16, 2024 10:18
@nazarhussain nazarhussain enabled auto-merge (squash) February 16, 2024 10:21
Copy link

codecov bot commented Feb 16, 2024

Codecov Report

Merging #6438 (0ab1f1d) into unstable (48871eb) will decrease coverage by 0.01%.
Report is 2 commits behind head on unstable.
The diff coverage is n/a.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #6438      +/-   ##
============================================
- Coverage     61.70%   61.70%   -0.01%     
============================================
  Files           553      553              
  Lines         57858    57858              
  Branches       1829     1828       -1     
============================================
- Hits          35702    35701       -1     
- Misses        22119    22120       +1     
  Partials         37       37              

@nazarhussain nazarhussain merged commit 0cee060 into unstable Feb 16, 2024
14 of 15 checks passed
@nazarhussain nazarhussain deleted the nflaig/typesafe-cli branch February 16, 2024 10:31
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: b61f4b3 Previous: 5047410 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 532.22 us/op 567.37 us/op 0.94
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 90.932 us/op 128.02 us/op 0.71
BLS verify - blst-native 1.3186 ms/op 1.3805 ms/op 0.96
BLS verifyMultipleSignatures 3 - blst-native 2.7668 ms/op 2.7995 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst-native 6.0520 ms/op 6.1346 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst-native 22.168 ms/op 22.372 ms/op 0.99
BLS verifyMultipleSignatures 64 - blst-native 43.657 ms/op 44.085 ms/op 0.99
BLS verifyMultipleSignatures 128 - blst-native 86.694 ms/op 87.366 ms/op 0.99
BLS deserializing 10000 signatures 948.16 ms/op 902.65 ms/op 1.05
BLS deserializing 100000 signatures 9.5281 s/op 9.4066 s/op 1.01
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.4791 ms/op 1.3366 ms/op 1.11
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.5789 ms/op 1.5041 ms/op 1.05
BLS verifyMultipleSignatures - same message - 32 - blst-native 3.1006 ms/op 2.7596 ms/op 1.12
BLS verifyMultipleSignatures - same message - 64 - blst-native 3.4669 ms/op 4.3510 ms/op 0.80
BLS verifyMultipleSignatures - same message - 128 - blst-native 5.5535 ms/op 7.4490 ms/op 0.75
BLS aggregatePubkeys 32 - blst-native 27.669 us/op 27.933 us/op 0.99
BLS aggregatePubkeys 128 - blst-native 100.67 us/op 102.01 us/op 0.99
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 49.990 ms/op 58.345 ms/op 0.86
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 50.550 ms/op 52.854 ms/op 0.96
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 30.023 ms/op 35.635 ms/op 0.84
getSlashingsAndExits - default max 146.45 us/op 154.21 us/op 0.95
getSlashingsAndExits - 2k 359.98 us/op 482.41 us/op 0.75
proposeBlockBody type=full, size=empty 5.0919 ms/op 5.2499 ms/op 0.97
isKnown best case - 1 super set check 351.00 ns/op 487.00 ns/op 0.72
isKnown normal case - 2 super set checks 308.00 ns/op 550.00 ns/op 0.56
isKnown worse case - 16 super set checks 310.00 ns/op 517.00 ns/op 0.60
CheckpointStateCache - add get delete 5.0830 us/op 6.8680 us/op 0.74
validate api signedAggregateAndProof - struct 2.7802 ms/op 2.7953 ms/op 0.99
validate gossip signedAggregateAndProof - struct 2.7829 ms/op 2.7775 ms/op 1.00
validate gossip attestation - vc 640000 1.3626 ms/op 1.3620 ms/op 1.00
batch validate gossip attestation - vc 640000 - chunk 32 167.39 us/op 164.86 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 64 145.15 us/op 153.14 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 128 140.02 us/op 153.88 us/op 0.91
batch validate gossip attestation - vc 640000 - chunk 256 130.47 us/op 163.42 us/op 0.80
pickEth1Vote - no votes 1.2190 ms/op 1.7412 ms/op 0.70
pickEth1Vote - max votes 8.1943 ms/op 15.087 ms/op 0.54
pickEth1Vote - Eth1Data hashTreeRoot value x2048 16.627 ms/op 27.655 ms/op 0.60
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 22.805 ms/op 41.658 ms/op 0.55
pickEth1Vote - Eth1Data fastSerialize value x2048 628.48 us/op 867.30 us/op 0.72
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.4289 ms/op 7.3227 ms/op 0.60
bytes32 toHexString 503.00 ns/op 957.00 ns/op 0.53
bytes32 Buffer.toString(hex) 293.00 ns/op 334.00 ns/op 0.88
bytes32 Buffer.toString(hex) from Uint8Array 433.00 ns/op 598.00 ns/op 0.72
bytes32 Buffer.toString(hex) + 0x 293.00 ns/op 338.00 ns/op 0.87
Object access 1 prop 0.16200 ns/op 0.25300 ns/op 0.64
Map access 1 prop 0.14500 ns/op 0.16500 ns/op 0.88
Object get x1000 7.7210 ns/op 7.6870 ns/op 1.00
Map get x1000 0.83500 ns/op 0.92500 ns/op 0.90
Object set x1000 56.786 ns/op 74.847 ns/op 0.76
Map set x1000 41.272 ns/op 56.943 ns/op 0.72
Return object 10000 times 0.23890 ns/op 0.25890 ns/op 0.92
Throw Error 10000 times 3.8863 us/op 4.0829 us/op 0.95
fastMsgIdFn sha256 / 200 bytes 3.2720 us/op 3.5390 us/op 0.92
fastMsgIdFn h32 xxhash / 200 bytes 280.00 ns/op 409.00 ns/op 0.68
fastMsgIdFn h64 xxhash / 200 bytes 336.00 ns/op 417.00 ns/op 0.81
fastMsgIdFn sha256 / 1000 bytes 11.461 us/op 12.263 us/op 0.93
fastMsgIdFn h32 xxhash / 1000 bytes 403.00 ns/op 554.00 ns/op 0.73
fastMsgIdFn h64 xxhash / 1000 bytes 429.00 ns/op 492.00 ns/op 0.87
fastMsgIdFn sha256 / 10000 bytes 103.72 us/op 105.52 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.9720 us/op 2.1730 us/op 0.91
fastMsgIdFn h64 xxhash / 10000 bytes 1.3640 us/op 1.4400 us/op 0.95
send data - 1000 256B messages 19.166 ms/op 23.160 ms/op 0.83
send data - 1000 512B messages 28.421 ms/op 25.378 ms/op 1.12
send data - 1000 1024B messages 43.179 ms/op 47.212 ms/op 0.91
send data - 1000 1200B messages 39.240 ms/op 46.051 ms/op 0.85
send data - 1000 2048B messages 51.232 ms/op 56.373 ms/op 0.91
send data - 1000 4096B messages 41.623 ms/op 51.129 ms/op 0.81
send data - 1000 16384B messages 120.24 ms/op 132.47 ms/op 0.91
send data - 1000 65536B messages 449.17 ms/op 488.11 ms/op 0.92
enrSubnets - fastDeserialize 64 bits 1.3570 us/op 1.6870 us/op 0.80
enrSubnets - ssz BitVector 64 bits 433.00 ns/op 549.00 ns/op 0.79
enrSubnets - fastDeserialize 4 bits 181.00 ns/op 235.00 ns/op 0.77
enrSubnets - ssz BitVector 4 bits 430.00 ns/op 538.00 ns/op 0.80
prioritizePeers score -10:0 att 32-0.1 sync 2-0 104.88 us/op 124.33 us/op 0.84
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 132.13 us/op 143.92 us/op 0.92
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 189.09 us/op 203.03 us/op 0.93
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 358.94 us/op 344.52 us/op 1.04
prioritizePeers score 0:0 att 64-1 sync 4-1 370.93 us/op 382.66 us/op 0.97
array of 16000 items push then shift 1.7253 us/op 1.6871 us/op 1.02
LinkedList of 16000 items push then shift 9.1080 ns/op 9.6140 ns/op 0.95
array of 16000 items push then pop 117.90 ns/op 123.96 ns/op 0.95
LinkedList of 16000 items push then pop 8.8310 ns/op 9.6830 ns/op 0.91
array of 24000 items push then shift 2.5849 us/op 2.8253 us/op 0.91
LinkedList of 24000 items push then shift 10.884 ns/op 9.5910 ns/op 1.13
array of 24000 items push then pop 164.57 ns/op 174.00 ns/op 0.95
LinkedList of 24000 items push then pop 10.097 ns/op 9.1160 ns/op 1.11
intersect bitArray bitLen 8 6.0920 ns/op 5.9680 ns/op 1.02
intersect array and set length 8 68.235 ns/op 85.750 ns/op 0.80
intersect bitArray bitLen 128 36.004 ns/op 35.716 ns/op 1.01
intersect array and set length 128 1.0058 us/op 1.0162 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 128 1.6550 us/op 1.8060 us/op 0.92
bitArray.getTrueBitIndexes() bitLen 248 2.6260 us/op 2.8770 us/op 0.91
bitArray.getTrueBitIndexes() bitLen 512 5.6020 us/op 6.0300 us/op 0.93
Buffer.concat 32 items 1.0240 us/op 1.0460 us/op 0.98
Uint8Array.set 32 items 1.8300 us/op 2.0700 us/op 0.88
Set add up to 64 items then delete first 4.9470 us/op 5.0893 us/op 0.97
OrderedSet add up to 64 items then delete first 6.3948 us/op 6.6284 us/op 0.96
Set add up to 64 items then delete last 5.2736 us/op 5.2553 us/op 1.00
OrderedSet add up to 64 items then delete last 6.6788 us/op 6.9138 us/op 0.97
Set add up to 64 items then delete middle 5.3483 us/op 5.4077 us/op 0.99
OrderedSet add up to 64 items then delete middle 8.0649 us/op 8.3559 us/op 0.97
Set add up to 128 items then delete first 10.640 us/op 10.664 us/op 1.00
OrderedSet add up to 128 items then delete first 14.420 us/op 13.847 us/op 1.04
Set add up to 128 items then delete last 10.577 us/op 10.484 us/op 1.01
OrderedSet add up to 128 items then delete last 12.788 us/op 12.706 us/op 1.01
Set add up to 128 items then delete middle 10.512 us/op 9.8880 us/op 1.06
OrderedSet add up to 128 items then delete middle 19.527 us/op 19.224 us/op 1.02
Set add up to 256 items then delete first 21.820 us/op 21.243 us/op 1.03
OrderedSet add up to 256 items then delete first 29.780 us/op 28.358 us/op 1.05
Set add up to 256 items then delete last 21.404 us/op 19.868 us/op 1.08
OrderedSet add up to 256 items then delete last 25.354 us/op 27.093 us/op 0.94
Set add up to 256 items then delete middle 20.280 us/op 21.829 us/op 0.93
OrderedSet add up to 256 items then delete middle 46.054 us/op 51.492 us/op 0.89
transfer serialized Status (84 B) 1.7850 us/op 1.9690 us/op 0.91
copy serialized Status (84 B) 1.3470 us/op 1.4370 us/op 0.94
transfer serialized SignedVoluntaryExit (112 B) 1.8500 us/op 2.0550 us/op 0.90
copy serialized SignedVoluntaryExit (112 B) 1.3630 us/op 1.4350 us/op 0.95
transfer serialized ProposerSlashing (416 B) 1.9910 us/op 2.8030 us/op 0.71
copy serialized ProposerSlashing (416 B) 1.7160 us/op 2.1790 us/op 0.79
transfer serialized Attestation (485 B) 2.1130 us/op 3.1850 us/op 0.66
copy serialized Attestation (485 B) 1.8150 us/op 2.9800 us/op 0.61
transfer serialized AttesterSlashing (33232 B) 1.9850 us/op 3.0800 us/op 0.64
copy serialized AttesterSlashing (33232 B) 5.3540 us/op 8.5710 us/op 0.62
transfer serialized Small SignedBeaconBlock (128000 B) 2.0680 us/op 3.0620 us/op 0.68
copy serialized Small SignedBeaconBlock (128000 B) 15.314 us/op 20.920 us/op 0.73
transfer serialized Avg SignedBeaconBlock (200000 B) 2.4110 us/op 3.3590 us/op 0.72
copy serialized Avg SignedBeaconBlock (200000 B) 37.676 us/op 34.662 us/op 1.09
transfer serialized BlobsSidecar (524380 B) 3.4180 us/op 2.9080 us/op 1.18
copy serialized BlobsSidecar (524380 B) 88.870 us/op 187.39 us/op 0.47
transfer serialized Big SignedBeaconBlock (1000000 B) 3.7850 us/op 3.1940 us/op 1.19
copy serialized Big SignedBeaconBlock (1000000 B) 179.42 us/op 178.85 us/op 1.00
pass gossip attestations to forkchoice per slot 4.3364 ms/op 4.4913 ms/op 0.97
forkChoice updateHead vc 100000 bc 64 eq 0 684.28 us/op 697.57 us/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 4.2327 ms/op 5.9726 ms/op 0.71
forkChoice updateHead vc 1000000 bc 64 eq 0 7.5107 ms/op 7.9067 ms/op 0.95
forkChoice updateHead vc 600000 bc 320 eq 0 4.2728 ms/op 4.7014 ms/op 0.91
forkChoice updateHead vc 600000 bc 1200 eq 0 4.4291 ms/op 4.5150 ms/op 0.98
forkChoice updateHead vc 600000 bc 7200 eq 0 5.2880 ms/op 5.4743 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 1000 11.313 ms/op 11.740 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 10000 12.070 ms/op 12.790 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 300000 16.179 ms/op 23.902 ms/op 0.68
computeDeltas 500000 validators 300 proto nodes 6.8031 ms/op 6.8151 ms/op 1.00
computeDeltas 500000 validators 1200 proto nodes 6.6399 ms/op 6.9965 ms/op 0.95
computeDeltas 500000 validators 7200 proto nodes 6.5032 ms/op 6.9422 ms/op 0.94
computeDeltas 750000 validators 300 proto nodes 9.7118 ms/op 10.717 ms/op 0.91
computeDeltas 750000 validators 1200 proto nodes 10.148 ms/op 10.713 ms/op 0.95
computeDeltas 750000 validators 7200 proto nodes 10.089 ms/op 11.047 ms/op 0.91
computeDeltas 1400000 validators 300 proto nodes 18.919 ms/op 19.289 ms/op 0.98
computeDeltas 1400000 validators 1200 proto nodes 19.256 ms/op 19.487 ms/op 0.99
computeDeltas 1400000 validators 7200 proto nodes 19.048 ms/op 19.048 ms/op 1.00
computeDeltas 2100000 validators 300 proto nodes 29.312 ms/op 29.643 ms/op 0.99
computeDeltas 2100000 validators 1200 proto nodes 29.064 ms/op 31.045 ms/op 0.94
computeDeltas 2100000 validators 7200 proto nodes 30.036 ms/op 30.478 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei normalcase 3.2008 ms/op 3.1319 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei worstcase 4.7070 ms/op 3.8259 ms/op 1.23
altair processAttestation - setStatus - 1/6 committees join 170.53 us/op 192.63 us/op 0.89
altair processAttestation - setStatus - 1/3 committees join 400.35 us/op 363.52 us/op 1.10
altair processAttestation - setStatus - 1/2 committees join 469.69 us/op 512.77 us/op 0.92
altair processAttestation - setStatus - 2/3 committees join 540.32 us/op 647.23 us/op 0.83
altair processAttestation - setStatus - 4/5 committees join 893.36 us/op 809.63 us/op 1.10
altair processAttestation - setStatus - 100% committees join 996.08 us/op 943.76 us/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase 13.921 ms/op 10.606 ms/op 1.31
altair processBlock - 250000 vs - 7PWei normalcase hashState 42.697 ms/op 37.947 ms/op 1.13
altair processBlock - 250000 vs - 7PWei worstcase 45.174 ms/op 44.672 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase hashState 99.337 ms/op 101.69 ms/op 0.98
phase0 processBlock - 250000 vs - 7PWei normalcase 2.7549 ms/op 3.1982 ms/op 0.86
phase0 processBlock - 250000 vs - 7PWei worstcase 31.524 ms/op 33.084 ms/op 0.95
altair processEth1Data - 250000 vs - 7PWei normalcase 591.91 us/op 739.99 us/op 0.80
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 26.229 us/op 21.236 us/op 1.24
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 70.206 us/op 93.685 us/op 0.75
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 41.891 us/op 34.050 us/op 1.23
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 20.952 us/op 19.054 us/op 1.10
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 249.84 us/op 218.03 us/op 1.15
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.5377 ms/op 1.4807 ms/op 1.04
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7822 ms/op 1.9923 ms/op 0.89
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.2136 ms/op 1.9960 ms/op 1.11
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.9669 ms/op 4.5949 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.7135 ms/op 3.1578 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.1956 ms/op 6.3748 ms/op 0.82
Tree 40 250000 create 431.78 ms/op 596.63 ms/op 0.72
Tree 40 250000 get(125000) 215.12 ns/op 236.53 ns/op 0.91
Tree 40 250000 set(125000) 1.1103 us/op 1.9345 us/op 0.57
Tree 40 250000 toArray() 22.152 ms/op 26.739 ms/op 0.83
Tree 40 250000 iterate all - toArray() + loop 21.891 ms/op 28.499 ms/op 0.77
Tree 40 250000 iterate all - get(i) 71.681 ms/op 77.798 ms/op 0.92
MutableVector 250000 create 12.735 ms/op 17.634 ms/op 0.72
MutableVector 250000 get(125000) 7.0300 ns/op 6.8960 ns/op 1.02
MutableVector 250000 set(125000) 297.22 ns/op 623.95 ns/op 0.48
MutableVector 250000 toArray() 3.7324 ms/op 4.4413 ms/op 0.84
MutableVector 250000 iterate all - toArray() + loop 3.7867 ms/op 4.9579 ms/op 0.76
MutableVector 250000 iterate all - get(i) 1.5585 ms/op 1.7556 ms/op 0.89
Array 250000 create 3.5296 ms/op 4.6604 ms/op 0.76
Array 250000 clone - spread 1.3682 ms/op 4.3599 ms/op 0.31
Array 250000 get(125000) 1.1330 ns/op 2.8220 ns/op 0.40
Array 250000 set(125000) 4.4270 ns/op 5.8740 ns/op 0.75
Array 250000 iterate all - loop 168.52 us/op 223.12 us/op 0.76
effectiveBalanceIncrements clone Uint8Array 300000 33.853 us/op 75.148 us/op 0.45
effectiveBalanceIncrements clone MutableVector 300000 410.00 ns/op 1.7170 us/op 0.24
effectiveBalanceIncrements rw all Uint8Array 300000 206.29 us/op 281.45 us/op 0.73
effectiveBalanceIncrements rw all MutableVector 300000 92.952 ms/op 179.59 ms/op 0.52
phase0 afterProcessEpoch - 250000 vs - 7PWei 116.60 ms/op 123.12 ms/op 0.95
phase0 beforeProcessEpoch - 250000 vs - 7PWei 52.999 ms/op 66.953 ms/op 0.79
altair processEpoch - mainnet_e81889 509.52 ms/op 624.82 ms/op 0.82
mainnet_e81889 - altair beforeProcessEpoch 80.768 ms/op 114.69 ms/op 0.70
mainnet_e81889 - altair processJustificationAndFinalization 14.601 us/op 24.715 us/op 0.59
mainnet_e81889 - altair processInactivityUpdates 6.2023 ms/op 9.2658 ms/op 0.67
mainnet_e81889 - altair processRewardsAndPenalties 63.904 ms/op 93.928 ms/op 0.68
mainnet_e81889 - altair processRegistryUpdates 3.7120 us/op 5.7200 us/op 0.65
mainnet_e81889 - altair processSlashings 685.00 ns/op 1.0280 us/op 0.67
mainnet_e81889 - altair processEth1DataReset 522.00 ns/op 1.1370 us/op 0.46
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6215 ms/op 2.0436 ms/op 0.79
mainnet_e81889 - altair processSlashingsReset 3.5200 us/op 6.9500 us/op 0.51
mainnet_e81889 - altair processRandaoMixesReset 4.9100 us/op 10.773 us/op 0.46
mainnet_e81889 - altair processHistoricalRootsUpdate 894.00 ns/op 1.6250 us/op 0.55
mainnet_e81889 - altair processParticipationFlagUpdates 1.7090 us/op 3.3860 us/op 0.50
mainnet_e81889 - altair processSyncCommitteeUpdates 639.00 ns/op 1.3530 us/op 0.47
mainnet_e81889 - altair afterProcessEpoch 122.29 ms/op 127.86 ms/op 0.96
capella processEpoch - mainnet_e217614 2.2456 s/op 2.8737 s/op 0.78
mainnet_e217614 - capella beforeProcessEpoch 488.78 ms/op 620.90 ms/op 0.79
mainnet_e217614 - capella processJustificationAndFinalization 21.280 us/op 29.799 us/op 0.71
mainnet_e217614 - capella processInactivityUpdates 26.976 ms/op 29.475 ms/op 0.92
mainnet_e217614 - capella processRewardsAndPenalties 408.65 ms/op 516.64 ms/op 0.79
mainnet_e217614 - capella processRegistryUpdates 20.812 us/op 41.699 us/op 0.50
mainnet_e217614 - capella processSlashings 652.00 ns/op 1.8810 us/op 0.35
mainnet_e217614 - capella processEth1DataReset 534.00 ns/op 1.1580 us/op 0.46
mainnet_e217614 - capella processEffectiveBalanceUpdates 6.2481 ms/op 8.4251 ms/op 0.74
mainnet_e217614 - capella processSlashingsReset 3.3890 us/op 8.6970 us/op 0.39
mainnet_e217614 - capella processRandaoMixesReset 5.1650 us/op 10.889 us/op 0.47
mainnet_e217614 - capella processHistoricalRootsUpdate 495.00 ns/op 1.0790 us/op 0.46
mainnet_e217614 - capella processParticipationFlagUpdates 1.5440 us/op 3.9190 us/op 0.39
mainnet_e217614 - capella afterProcessEpoch 334.29 ms/op 318.59 ms/op 1.05
phase0 processEpoch - mainnet_e58758 508.51 ms/op 514.19 ms/op 0.99
mainnet_e58758 - phase0 beforeProcessEpoch 119.56 ms/op 186.65 ms/op 0.64
mainnet_e58758 - phase0 processJustificationAndFinalization 16.680 us/op 34.609 us/op 0.48
mainnet_e58758 - phase0 processRewardsAndPenalties 56.548 ms/op 41.353 ms/op 1.37
mainnet_e58758 - phase0 processRegistryUpdates 10.182 us/op 15.746 us/op 0.65
mainnet_e58758 - phase0 processSlashings 681.00 ns/op 601.00 ns/op 1.13
mainnet_e58758 - phase0 processEth1DataReset 503.00 ns/op 692.00 ns/op 0.73
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1825 ms/op 1.7268 ms/op 0.68
mainnet_e58758 - phase0 processSlashingsReset 6.6200 us/op 5.7990 us/op 1.14
mainnet_e58758 - phase0 processRandaoMixesReset 5.2060 us/op 9.3900 us/op 0.55
mainnet_e58758 - phase0 processHistoricalRootsUpdate 556.00 ns/op 1.7030 us/op 0.33
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.8320 us/op 10.585 us/op 0.36
mainnet_e58758 - phase0 afterProcessEpoch 101.51 ms/op 124.34 ms/op 0.82
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3781 ms/op 2.3332 ms/op 0.59
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9593 ms/op 3.5032 ms/op 0.56
altair processInactivityUpdates - 250000 normalcase 21.341 ms/op 44.049 ms/op 0.48
altair processInactivityUpdates - 250000 worstcase 25.959 ms/op 43.490 ms/op 0.60
phase0 processRegistryUpdates - 250000 normalcase 13.390 us/op 18.671 us/op 0.72
phase0 processRegistryUpdates - 250000 badcase_full_deposits 438.96 us/op 819.45 us/op 0.54
phase0 processRegistryUpdates - 250000 worstcase 0.5 132.40 ms/op 244.52 ms/op 0.54
altair processRewardsAndPenalties - 250000 normalcase 60.051 ms/op 86.319 ms/op 0.70
altair processRewardsAndPenalties - 250000 worstcase 57.082 ms/op 77.335 ms/op 0.74
phase0 getAttestationDeltas - 250000 normalcase 9.4172 ms/op 15.718 ms/op 0.60
phase0 getAttestationDeltas - 250000 worstcase 9.1202 ms/op 17.447 ms/op 0.52
phase0 processSlashings - 250000 worstcase 91.163 us/op 152.94 us/op 0.60
altair processSyncCommitteeUpdates - 250000 163.07 ms/op 222.41 ms/op 0.73
BeaconState.hashTreeRoot - No change 367.00 ns/op 1.0850 us/op 0.34
BeaconState.hashTreeRoot - 1 full validator 149.18 us/op 224.24 us/op 0.67
BeaconState.hashTreeRoot - 32 full validator 1.5119 ms/op 1.8792 ms/op 0.80
BeaconState.hashTreeRoot - 512 full validator 18.564 ms/op 22.899 ms/op 0.81
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 187.88 us/op 223.78 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.5211 ms/op 3.0664 ms/op 0.82
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 29.586 ms/op 56.950 ms/op 0.52
BeaconState.hashTreeRoot - 1 balances 144.39 us/op 200.70 us/op 0.72
BeaconState.hashTreeRoot - 32 balances 1.3606 ms/op 1.5517 ms/op 0.88
BeaconState.hashTreeRoot - 512 balances 12.860 ms/op 18.835 ms/op 0.68
BeaconState.hashTreeRoot - 250000 balances 213.01 ms/op 289.87 ms/op 0.73
aggregationBits - 2048 els - zipIndexesInBitList 18.305 us/op 45.859 us/op 0.40
byteArrayEquals 32 76.157 ns/op 113.09 ns/op 0.67
Buffer.compare 32 56.233 ns/op 73.344 ns/op 0.77
byteArrayEquals 1024 2.0737 us/op 3.1607 us/op 0.66
Buffer.compare 1024 70.915 ns/op 90.057 ns/op 0.79
byteArrayEquals 16384 33.106 us/op 43.562 us/op 0.76
Buffer.compare 16384 271.55 ns/op 361.56 ns/op 0.75
byteArrayEquals 123687377 244.71 ms/op 357.55 ms/op 0.68
Buffer.compare 123687377 6.0278 ms/op 9.7299 ms/op 0.62
byteArrayEquals 32 - diff last byte 72.704 ns/op 109.46 ns/op 0.66
Buffer.compare 32 - diff last byte 55.656 ns/op 75.556 ns/op 0.74
byteArrayEquals 1024 - diff last byte 2.0239 us/op 2.8821 us/op 0.70
Buffer.compare 1024 - diff last byte 70.562 ns/op 85.454 ns/op 0.83
byteArrayEquals 16384 - diff last byte 32.273 us/op 47.653 us/op 0.68
Buffer.compare 16384 - diff last byte 285.32 ns/op 347.83 ns/op 0.82
byteArrayEquals 123687377 - diff last byte 243.26 ms/op 278.16 ms/op 0.87
Buffer.compare 123687377 - diff last byte 6.0396 ms/op 9.7387 ms/op 0.62
byteArrayEquals 32 - random bytes 5.2350 ns/op 7.5800 ns/op 0.69
Buffer.compare 32 - random bytes 60.123 ns/op 64.942 ns/op 0.93
byteArrayEquals 1024 - random bytes 5.1530 ns/op 6.8400 ns/op 0.75
Buffer.compare 1024 - random bytes 59.768 ns/op 65.262 ns/op 0.92
byteArrayEquals 16384 - random bytes 5.1440 ns/op 6.7360 ns/op 0.76
Buffer.compare 16384 - random bytes 59.758 ns/op 65.551 ns/op 0.91
byteArrayEquals 123687377 - random bytes 8.3200 ns/op 13.690 ns/op 0.61
Buffer.compare 123687377 - random bytes 63.150 ns/op 77.540 ns/op 0.81
regular array get 100000 times 43.912 us/op 49.343 us/op 0.89
wrappedArray get 100000 times 43.793 us/op 48.241 us/op 0.91
arrayWithProxy get 100000 times 13.943 ms/op 15.283 ms/op 0.91
ssz.Root.equals 54.093 ns/op 56.881 ns/op 0.95
byteArrayEquals 52.671 ns/op 57.299 ns/op 0.92
Buffer.compare 10.808 ns/op 12.642 ns/op 0.85
shuffle list - 16384 els 6.7923 ms/op 8.5063 ms/op 0.80
shuffle list - 250000 els 102.96 ms/op 128.09 ms/op 0.80
processSlot - 1 slots 14.949 us/op 19.899 us/op 0.75
processSlot - 32 slots 3.0815 ms/op 4.9444 ms/op 0.62
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 62.347 ms/op 65.914 ms/op 0.95
getCommitteeAssignments - req 1 vs - 250000 vc 2.5615 ms/op 2.5745 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.7555 ms/op 3.8158 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2586 ms/op 4.2124 ms/op 1.01
findModifiedValidators - 10000 modified validators 636.05 ms/op 576.48 ms/op 1.10
findModifiedValidators - 1000 modified validators 487.09 ms/op 467.57 ms/op 1.04
findModifiedValidators - 100 modified validators 488.00 ms/op 476.37 ms/op 1.02
findModifiedValidators - 10 modified validators 475.24 ms/op 462.56 ms/op 1.03
findModifiedValidators - 1 modified validators 457.21 ms/op 433.77 ms/op 1.05
findModifiedValidators - no difference 469.18 ms/op 441.46 ms/op 1.06
compare ViewDUs 4.7159 s/op 4.8342 s/op 0.98
compare each validator Uint8Array 1.8770 s/op 2.0622 s/op 0.91
compare ViewDU to Uint8Array 1.6879 s/op 1.4182 s/op 1.19
migrate state 1000000 validators, 24 modified, 0 new 1.0056 s/op 814.33 ms/op 1.23
migrate state 1000000 validators, 1700 modified, 1000 new 1.0895 s/op 1.1931 s/op 0.91
migrate state 1000000 validators, 3400 modified, 2000 new 1.2829 s/op 1.8988 s/op 0.68
migrate state 1500000 validators, 24 modified, 0 new 850.93 ms/op 1.1906 s/op 0.71
migrate state 1500000 validators, 1700 modified, 1000 new 1.1462 s/op 1.5775 s/op 0.73
migrate state 1500000 validators, 3400 modified, 2000 new 1.4622 s/op 1.9252 s/op 0.76
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.8300 ns/op 5.4800 ns/op 1.06
state getBlockRootAtSlot - 250000 vs - 7PWei 921.13 ns/op 1.0725 us/op 0.86
computeProposers - vc 250000 10.977 ms/op 12.907 ms/op 0.85
computeEpochShuffling - vc 250000 120.11 ms/op 129.27 ms/op 0.93
getNextSyncCommittee - vc 250000 189.36 ms/op 240.55 ms/op 0.79
computeSigningRoot for AttestationData 36.330 us/op 37.601 us/op 0.97
hash AttestationData serialized data then Buffer.toString(base64) 2.6388 us/op 2.6157 us/op 1.01
toHexString serialized data 1.5388 us/op 1.9016 us/op 0.81
Buffer.toString(base64) 358.08 ns/op 293.92 ns/op 1.22

by benchmarkbot/action

@matthewkeil
Copy link
Member

That’s some pretty fancy footwork @nflaig !!!

@wemeetagain
Copy link
Member

🎉 This PR is included in v1.16.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve type safety of CLI args
4 participants