lodestar
lodestar copied to clipboard
feat: dual export some modules (params, utils, test-utils, spec-test-util)
Motivation
I updated the spec tests in blst-ts and the util in lodestar is much better. Need a CJS module though to be able to import it there. Dual-module export of spec-test-util
depends on utils
so update that one as well. There are some good other test-utils
that may be helpful in other repos and the script was already written so exported that as well. That depends on params
so updated that also. Sets a pretty good precedent for how we can export packages as dual module should we want to.
Description
- Adds
scripts/fix_dual_modules_lib.mjs
- Adds
scripts/fix_dirname_and_filename.mjs
- Rename
tsconfig.build.json
totsconfig.esm.json
for all dual module packages - Adds
tsconfig.cjs.json
to all dual module packages - Updates package.json in all dual module packages
- Correct exports/types/files that are exported/bundled
- Adds scripts for build process
Performance Report
✔️ no performance regression detected
🚀🚀 Significant benchmark improvement detected
Benchmark suite | Current: b84ab1631845b445aae059971efe190f3a508d11 | Previous: 8c55820d888d097946e677e78b10f12a1046c7a3 | Ratio |
---|---|---|---|
BLS verify - blst-native | 1.3305 ms/op | 4.6220 ms/op | 0.29 |
BLS verifyMultipleSignatures - same message - 32 - blst-native | 2.2868 ms/op | 7.5494 ms/op | 0.30 |
BLS verifyMultipleSignatures - same message - 64 - blst-native | 3.4950 ms/op | 10.497 ms/op | 0.33 |
getSlashingsAndExits - 2k | 456.70 us/op | 2.2596 ms/op | 0.20 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 15.894 ms/op | 48.872 ms/op | 0.33 |
altair processAttestation - 250000 vs - 7PWei worstcase | 3.4939 ms/op | 10.646 ms/op | 0.33 |
altair processAttestation - setStatus - 4/5 committees join | 777.11 us/op | 2.9447 ms/op | 0.26 |
altair processAttestation - setStatus - 100% committees join | 903.80 us/op | 3.0049 ms/op | 0.30 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 31.074 ms/op | 94.917 ms/op | 0.33 |
altair processBlock - 250000 vs - 7PWei worstcase | 35.857 ms/op | 120.51 ms/op | 0.30 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 89.544 ms/op | 329.24 ms/op | 0.27 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 2.5616 ms/op | 8.8081 ms/op | 0.29 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 30.578 ms/op | 92.794 ms/op | 0.33 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 481.03 us/op | 1.9698 ms/op | 0.24 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 12.073 us/op | 45.205 us/op | 0.27 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 5.3086 ms/op | 16.270 ms/op | 0.33 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 111.16 ms/op | 478.32 ms/op | 0.23 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.3736 s/op | 4.6549 s/op | 0.30 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.5800 ns/op | 19.810 ns/op | 0.28 |
computeEpochShuffling - vc 250000 | 142.10 ms/op | 500.90 ms/op | 0.28 |
hash AttestationData serialized data then Buffer.toString(base64) | 2.4461 us/op | 7.5467 us/op | 0.32 |
toHexString serialized data | 1.4267 us/op | 4.3130 us/op | 0.33 |
Full benchmark results
Benchmark suite | Current: b84ab1631845b445aae059971efe190f3a508d11 | Previous: 8c55820d888d097946e677e78b10f12a1046c7a3 | Ratio |
---|---|---|---|
getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 975.18 us/op | 2.3029 ms/op | 0.42 |
getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 109.17 us/op | 242.33 us/op | 0.45 |
BLS verify - blst-native | 1.3305 ms/op | 4.6220 ms/op | 0.29 |
BLS verifyMultipleSignatures 3 - blst-native | 2.5453 ms/op | 7.2131 ms/op | 0.35 |
BLS verifyMultipleSignatures 8 - blst-native | 5.4287 ms/op | 14.164 ms/op | 0.38 |
BLS verifyMultipleSignatures 32 - blst-native | 20.148 ms/op | 41.266 ms/op | 0.49 |
BLS verifyMultipleSignatures 64 - blst-native | 39.066 ms/op | 113.27 ms/op | 0.34 |
BLS verifyMultipleSignatures 128 - blst-native | 76.924 ms/op | 177.83 ms/op | 0.43 |
BLS deserializing 10000 signatures | 895.09 ms/op | 2.5177 s/op | 0.36 |
BLS deserializing 100000 signatures | 8.9474 s/op | 24.749 s/op | 0.36 |
BLS verifyMultipleSignatures - same message - 3 - blst-native | 1.3186 ms/op | 3.6470 ms/op | 0.36 |
BLS verifyMultipleSignatures - same message - 8 - blst-native | 1.5024 ms/op | 4.2004 ms/op | 0.36 |
BLS verifyMultipleSignatures - same message - 32 - blst-native | 2.2868 ms/op | 7.5494 ms/op | 0.30 |
BLS verifyMultipleSignatures - same message - 64 - blst-native | 3.4950 ms/op | 10.497 ms/op | 0.33 |
BLS verifyMultipleSignatures - same message - 128 - blst-native | 5.7275 ms/op | 16.639 ms/op | 0.34 |
BLS aggregatePubkeys 32 - blst-native | 29.179 us/op | 71.598 us/op | 0.41 |
BLS aggregatePubkeys 128 - blst-native | 110.98 us/op | 295.81 us/op | 0.38 |
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 61.383 ms/op | 132.90 ms/op | 0.46 |
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 56.936 ms/op | 127.17 ms/op | 0.45 |
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 38.233 ms/op | 98.591 ms/op | 0.39 |
getSlashingsAndExits - default max | 182.92 us/op | 521.95 us/op | 0.35 |
getSlashingsAndExits - 2k | 456.70 us/op | 2.2596 ms/op | 0.20 |
proposeBlockBody type=full, size=empty | 6.1686 ms/op | 12.699 ms/op | 0.49 |
isKnown best case - 1 super set check | 543.00 ns/op | 882.00 ns/op | 0.62 |
isKnown normal case - 2 super set checks | 462.00 ns/op | 760.00 ns/op | 0.61 |
isKnown worse case - 16 super set checks | 401.00 ns/op | 610.00 ns/op | 0.66 |
InMemoryCheckpointStateCache - add get delete | 6.7480 us/op | 14.577 us/op | 0.46 |
validate api signedAggregateAndProof - struct | 2.4084 ms/op | 3.3289 ms/op | 0.72 |
validate gossip signedAggregateAndProof - struct | 2.4345 ms/op | 3.1935 ms/op | 0.76 |
validate gossip attestation - vc 640000 | 1.3617 ms/op | 1.7124 ms/op | 0.80 |
batch validate gossip attestation - vc 640000 - chunk 32 | 167.30 us/op | 198.34 us/op | 0.84 |
batch validate gossip attestation - vc 640000 - chunk 64 | 154.32 us/op | 192.42 us/op | 0.80 |
batch validate gossip attestation - vc 640000 - chunk 128 | 151.10 us/op | 178.30 us/op | 0.85 |
batch validate gossip attestation - vc 640000 - chunk 256 | 147.17 us/op | 171.99 us/op | 0.86 |
pickEth1Vote - no votes | 1.2925 ms/op | 1.5660 ms/op | 0.83 |
pickEth1Vote - max votes | 11.480 ms/op | 10.131 ms/op | 1.13 |
pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 18.287 ms/op | 21.705 ms/op | 0.84 |
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 20.885 ms/op | 29.042 ms/op | 0.72 |
pickEth1Vote - Eth1Data fastSerialize value x2048 | 625.27 us/op | 888.39 us/op | 0.70 |
pickEth1Vote - Eth1Data fastSerialize tree x2048 | 8.4061 ms/op | 7.6711 ms/op | 1.10 |
bytes32 toHexString | 646.00 ns/op | 708.00 ns/op | 0.91 |
bytes32 Buffer.toString(hex) | 299.00 ns/op | 369.00 ns/op | 0.81 |
bytes32 Buffer.toString(hex) from Uint8Array | 493.00 ns/op | 538.00 ns/op | 0.92 |
bytes32 Buffer.toString(hex) + 0x | 304.00 ns/op | 388.00 ns/op | 0.78 |
Object access 1 prop | 0.16400 ns/op | 0.24000 ns/op | 0.68 |
Map access 1 prop | 0.16000 ns/op | 0.25000 ns/op | 0.64 |
Object get x1000 | 7.8460 ns/op | 8.8980 ns/op | 0.88 |
Map get x1000 | 0.77600 ns/op | 0.92900 ns/op | 0.84 |
Object set x1000 | 49.876 ns/op | 76.016 ns/op | 0.66 |
Map set x1000 | 39.736 ns/op | 53.552 ns/op | 0.74 |
Return object 10000 times | 0.24000 ns/op | 0.27560 ns/op | 0.87 |
Throw Error 10000 times | 3.9986 us/op | 5.3164 us/op | 0.75 |
fastMsgIdFn sha256 / 200 bytes | 3.4090 us/op | 4.0820 us/op | 0.84 |
fastMsgIdFn h32 xxhash / 200 bytes | 331.00 ns/op | 421.00 ns/op | 0.79 |
fastMsgIdFn h64 xxhash / 200 bytes | 391.00 ns/op | 429.00 ns/op | 0.91 |
fastMsgIdFn sha256 / 1000 bytes | 11.557 us/op | 14.245 us/op | 0.81 |
fastMsgIdFn h32 xxhash / 1000 bytes | 463.00 ns/op | 726.00 ns/op | 0.64 |
fastMsgIdFn h64 xxhash / 1000 bytes | 456.00 ns/op | 737.00 ns/op | 0.62 |
fastMsgIdFn sha256 / 10000 bytes | 104.13 us/op | 187.20 us/op | 0.56 |
fastMsgIdFn h32 xxhash / 10000 bytes | 2.0600 us/op | 2.8300 us/op | 0.73 |
fastMsgIdFn h64 xxhash / 10000 bytes | 1.4170 us/op | 2.4660 us/op | 0.57 |
send data - 1000 256B messages | 19.018 ms/op | 32.836 ms/op | 0.58 |
send data - 1000 512B messages | 25.832 ms/op | 40.521 ms/op | 0.64 |
send data - 1000 1024B messages | 41.155 ms/op | 84.961 ms/op | 0.48 |
send data - 1000 1200B messages | 29.040 ms/op | 60.476 ms/op | 0.48 |
send data - 1000 2048B messages | 37.012 ms/op | 64.310 ms/op | 0.58 |
send data - 1000 4096B messages | 37.670 ms/op | 78.691 ms/op | 0.48 |
send data - 1000 16384B messages | 94.192 ms/op | 146.65 ms/op | 0.64 |
send data - 1000 65536B messages | 324.96 ms/op | 611.10 ms/op | 0.53 |
enrSubnets - fastDeserialize 64 bits | 1.2880 us/op | 2.1060 us/op | 0.61 |
enrSubnets - ssz BitVector 64 bits | 456.00 ns/op | 695.00 ns/op | 0.66 |
enrSubnets - fastDeserialize 4 bits | 179.00 ns/op | 247.00 ns/op | 0.72 |
enrSubnets - ssz BitVector 4 bits | 474.00 ns/op | 666.00 ns/op | 0.71 |
prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 218.53 us/op | 431.17 us/op | 0.51 |
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 296.49 us/op | 607.33 us/op | 0.49 |
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 384.81 us/op | 643.22 us/op | 0.60 |
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 601.29 us/op | 865.74 us/op | 0.69 |
prioritizePeers score 0:0 att 64-1 sync 4-1 | 738.73 us/op | 1.5802 ms/op | 0.47 |
array of 16000 items push then shift | 1.6245 us/op | 2.0285 us/op | 0.80 |
LinkedList of 16000 items push then shift | 9.1050 ns/op | 11.112 ns/op | 0.82 |
array of 16000 items push then pop | 93.561 ns/op | 186.22 ns/op | 0.50 |
LinkedList of 16000 items push then pop | 8.6990 ns/op | 17.679 ns/op | 0.49 |
array of 24000 items push then shift | 2.6055 us/op | 3.6848 us/op | 0.71 |
LinkedList of 24000 items push then shift | 9.2090 ns/op | 12.309 ns/op | 0.75 |
array of 24000 items push then pop | 150.06 ns/op | 167.87 ns/op | 0.89 |
LinkedList of 24000 items push then pop | 9.7380 ns/op | 11.313 ns/op | 0.86 |
intersect bitArray bitLen 8 | 5.8610 ns/op | 7.5290 ns/op | 0.78 |
intersect array and set length 8 | 64.654 ns/op | 83.034 ns/op | 0.78 |
intersect bitArray bitLen 128 | 36.947 ns/op | 43.841 ns/op | 0.84 |
intersect array and set length 128 | 900.23 ns/op | 1.0799 us/op | 0.83 |
bitArray.getTrueBitIndexes() bitLen 128 | 1.7110 us/op | 2.0070 us/op | 0.85 |
bitArray.getTrueBitIndexes() bitLen 248 | 2.6700 us/op | 3.6230 us/op | 0.74 |
bitArray.getTrueBitIndexes() bitLen 512 | 5.1580 us/op | 8.8410 us/op | 0.58 |
Buffer.concat 32 items | 1.0160 us/op | 1.4520 us/op | 0.70 |
Uint8Array.set 32 items | 2.2740 us/op | 2.4790 us/op | 0.92 |
Set add up to 64 items then delete first | 4.7169 us/op | 7.0549 us/op | 0.67 |
OrderedSet add up to 64 items then delete first | 5.7156 us/op | 8.5126 us/op | 0.67 |
Set add up to 64 items then delete last | 4.7468 us/op | 6.1580 us/op | 0.77 |
OrderedSet add up to 64 items then delete last | 6.6794 us/op | 9.8331 us/op | 0.68 |
Set add up to 64 items then delete middle | 4.9400 us/op | 6.1083 us/op | 0.81 |
OrderedSet add up to 64 items then delete middle | 8.2549 us/op | 9.6719 us/op | 0.85 |
Set add up to 128 items then delete first | 10.305 us/op | 12.588 us/op | 0.82 |
OrderedSet add up to 128 items then delete first | 12.603 us/op | 16.187 us/op | 0.78 |
Set add up to 128 items then delete last | 9.5213 us/op | 12.185 us/op | 0.78 |
OrderedSet add up to 128 items then delete last | 12.689 us/op | 15.338 us/op | 0.83 |
Set add up to 128 items then delete middle | 9.2525 us/op | 12.271 us/op | 0.75 |
OrderedSet add up to 128 items then delete middle | 18.339 us/op | 22.606 us/op | 0.81 |
Set add up to 256 items then delete first | 19.134 us/op | 25.144 us/op | 0.76 |
OrderedSet add up to 256 items then delete first | 24.043 us/op | 34.591 us/op | 0.70 |
Set add up to 256 items then delete last | 18.371 us/op | 24.789 us/op | 0.74 |
OrderedSet add up to 256 items then delete last | 24.784 us/op | 32.742 us/op | 0.76 |
Set add up to 256 items then delete middle | 18.709 us/op | 25.820 us/op | 0.72 |
OrderedSet add up to 256 items then delete middle | 46.363 us/op | 61.515 us/op | 0.75 |
transfer serialized Status (84 B) | 1.6890 us/op | 2.4020 us/op | 0.70 |
copy serialized Status (84 B) | 1.2380 us/op | 1.7540 us/op | 0.71 |
transfer serialized SignedVoluntaryExit (112 B) | 1.7590 us/op | 2.4020 us/op | 0.73 |
copy serialized SignedVoluntaryExit (112 B) | 1.2820 us/op | 1.7840 us/op | 0.72 |
transfer serialized ProposerSlashing (416 B) | 2.3910 us/op | 2.6750 us/op | 0.89 |
copy serialized ProposerSlashing (416 B) | 2.1260 us/op | 2.3400 us/op | 0.91 |
transfer serialized Attestation (485 B) | 2.8440 us/op | 2.7310 us/op | 1.04 |
copy serialized Attestation (485 B) | 2.6550 us/op | 2.4700 us/op | 1.07 |
transfer serialized AttesterSlashing (33232 B) | 2.1770 us/op | 2.3550 us/op | 0.92 |
copy serialized AttesterSlashing (33232 B) | 4.6990 us/op | 7.5150 us/op | 0.63 |
transfer serialized Small SignedBeaconBlock (128000 B) | 2.4310 us/op | 2.9510 us/op | 0.82 |
copy serialized Small SignedBeaconBlock (128000 B) | 13.239 us/op | 25.524 us/op | 0.52 |
transfer serialized Avg SignedBeaconBlock (200000 B) | 3.3790 us/op | 4.9100 us/op | 0.69 |
copy serialized Avg SignedBeaconBlock (200000 B) | 21.099 us/op | 38.146 us/op | 0.55 |
transfer serialized BlobsSidecar (524380 B) | 3.0350 us/op | 5.0500 us/op | 0.60 |
copy serialized BlobsSidecar (524380 B) | 82.513 us/op | 111.45 us/op | 0.74 |
transfer serialized Big SignedBeaconBlock (1000000 B) | 3.1460 us/op | 5.1350 us/op | 0.61 |
copy serialized Big SignedBeaconBlock (1000000 B) | 154.67 us/op | 202.15 us/op | 0.77 |
pass gossip attestations to forkchoice per slot | 3.8130 ms/op | 6.7785 ms/op | 0.56 |
forkChoice updateHead vc 100000 bc 64 eq 0 | 715.32 us/op | 1.2608 ms/op | 0.57 |
forkChoice updateHead vc 600000 bc 64 eq 0 | 4.2154 ms/op | 5.7986 ms/op | 0.73 |
forkChoice updateHead vc 1000000 bc 64 eq 0 | 6.9910 ms/op | 11.661 ms/op | 0.60 |
forkChoice updateHead vc 600000 bc 320 eq 0 | 4.1813 ms/op | 8.4573 ms/op | 0.49 |
forkChoice updateHead vc 600000 bc 1200 eq 0 | 4.2849 ms/op | 10.871 ms/op | 0.39 |
forkChoice updateHead vc 600000 bc 7200 eq 0 | 5.8000 ms/op | 12.849 ms/op | 0.45 |
forkChoice updateHead vc 600000 bc 64 eq 1000 | 11.137 ms/op | 24.805 ms/op | 0.45 |
forkChoice updateHead vc 600000 bc 64 eq 10000 | 11.911 ms/op | 15.513 ms/op | 0.77 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 15.894 ms/op | 48.872 ms/op | 0.33 |
computeDeltas 500000 validators 300 proto nodes | 6.6392 ms/op | 14.398 ms/op | 0.46 |
computeDeltas 500000 validators 1200 proto nodes | 6.4626 ms/op | 13.345 ms/op | 0.48 |
computeDeltas 500000 validators 7200 proto nodes | 6.4249 ms/op | 10.291 ms/op | 0.62 |
computeDeltas 750000 validators 300 proto nodes | 9.6543 ms/op | 14.484 ms/op | 0.67 |
computeDeltas 750000 validators 1200 proto nodes | 9.5955 ms/op | 13.783 ms/op | 0.70 |
computeDeltas 750000 validators 7200 proto nodes | 9.6249 ms/op | 13.164 ms/op | 0.73 |
computeDeltas 1400000 validators 300 proto nodes | 18.146 ms/op | 25.279 ms/op | 0.72 |
computeDeltas 1400000 validators 1200 proto nodes | 18.657 ms/op | 25.346 ms/op | 0.74 |
computeDeltas 1400000 validators 7200 proto nodes | 17.955 ms/op | 19.808 ms/op | 0.91 |
computeDeltas 2100000 validators 300 proto nodes | 27.430 ms/op | 37.939 ms/op | 0.72 |
computeDeltas 2100000 validators 1200 proto nodes | 27.295 ms/op | 59.623 ms/op | 0.46 |
computeDeltas 2100000 validators 7200 proto nodes | 28.167 ms/op | 55.428 ms/op | 0.51 |
altair processAttestation - 250000 vs - 7PWei normalcase | 2.2463 ms/op | 5.2133 ms/op | 0.43 |
altair processAttestation - 250000 vs - 7PWei worstcase | 3.4939 ms/op | 10.646 ms/op | 0.33 |
altair processAttestation - setStatus - 1/6 committees join | 170.59 us/op | 470.01 us/op | 0.36 |
altair processAttestation - setStatus - 1/3 committees join | 358.50 us/op | 814.17 us/op | 0.44 |
altair processAttestation - setStatus - 1/2 committees join | 451.40 us/op | 1.2769 ms/op | 0.35 |
altair processAttestation - setStatus - 2/3 committees join | 586.66 us/op | 1.7340 ms/op | 0.34 |
altair processAttestation - setStatus - 4/5 committees join | 777.11 us/op | 2.9447 ms/op | 0.26 |
altair processAttestation - setStatus - 100% committees join | 903.80 us/op | 3.0049 ms/op | 0.30 |
altair processBlock - 250000 vs - 7PWei normalcase | 8.9623 ms/op | 24.380 ms/op | 0.37 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 31.074 ms/op | 94.917 ms/op | 0.33 |
altair processBlock - 250000 vs - 7PWei worstcase | 35.857 ms/op | 120.51 ms/op | 0.30 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 89.544 ms/op | 329.24 ms/op | 0.27 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 2.5616 ms/op | 8.8081 ms/op | 0.29 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 30.578 ms/op | 92.794 ms/op | 0.33 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 481.03 us/op | 1.9698 ms/op | 0.24 |
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 16.177 us/op | 41.794 us/op | 0.39 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 67.376 us/op | 117.08 us/op | 0.58 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 27.012 us/op | 64.244 us/op | 0.42 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 12.073 us/op | 45.205 us/op | 0.27 |
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 207.57 us/op | 314.82 us/op | 0.66 |
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.6715 ms/op | 3.6116 ms/op | 0.46 |
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 2.0527 ms/op | 4.4367 ms/op | 0.46 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.9621 ms/op | 4.3347 ms/op | 0.45 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.6717 ms/op | 8.7883 ms/op | 0.42 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 3.0704 ms/op | 7.7213 ms/op | 0.40 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 5.3086 ms/op | 16.270 ms/op | 0.33 |
Tree 40 250000 create | 336.57 ms/op | 1.0421 s/op | 0.32 |
Tree 40 250000 get(125000) | 205.44 ns/op | 621.35 ns/op | 0.33 |
Tree 40 250000 set(125000) | 745.18 ns/op | 3.0284 us/op | 0.25 |
Tree 40 250000 toArray() | 21.053 ms/op | 44.971 ms/op | 0.47 |
Tree 40 250000 iterate all - toArray() + loop | 20.476 ms/op | 44.999 ms/op | 0.46 |
Tree 40 250000 iterate all - get(i) | 72.184 ms/op | 260.23 ms/op | 0.28 |
MutableVector 250000 create | 17.614 ms/op | 46.855 ms/op | 0.38 |
MutableVector 250000 get(125000) | 6.9690 ns/op | 19.321 ns/op | 0.36 |
MutableVector 250000 set(125000) | 305.10 ns/op | 1.3137 us/op | 0.23 |
MutableVector 250000 toArray() | 3.8571 ms/op | 9.1841 ms/op | 0.42 |
MutableVector 250000 iterate all - toArray() + loop | 3.6704 ms/op | 12.201 ms/op | 0.30 |
MutableVector 250000 iterate all - get(i) | 1.5066 ms/op | 5.8402 ms/op | 0.26 |
Array 250000 create | 3.4506 ms/op | 7.9029 ms/op | 0.44 |
Array 250000 clone - spread | 1.2803 ms/op | 3.9764 ms/op | 0.32 |
Array 250000 get(125000) | 1.0780 ns/op | 5.0550 ns/op | 0.21 |
Array 250000 set(125000) | 4.2290 ns/op | 15.946 ns/op | 0.27 |
Array 250000 iterate all - loop | 164.58 us/op | 627.57 us/op | 0.26 |
effectiveBalanceIncrements clone Uint8Array 300000 | 34.805 us/op | 91.245 us/op | 0.38 |
effectiveBalanceIncrements clone MutableVector 300000 | 418.00 ns/op | 1.4380 us/op | 0.29 |
effectiveBalanceIncrements rw all Uint8Array 300000 | 199.72 us/op | 681.29 us/op | 0.29 |
effectiveBalanceIncrements rw all MutableVector 300000 | 89.207 ms/op | 434.77 ms/op | 0.21 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 111.16 ms/op | 478.32 ms/op | 0.23 |
phase0 beforeProcessEpoch - 250000 vs - 7PWei | 50.965 ms/op | 123.49 ms/op | 0.41 |
altair processEpoch - mainnet_e81889 | 521.78 ms/op | 959.39 ms/op | 0.54 |
mainnet_e81889 - altair beforeProcessEpoch | 73.021 ms/op | 160.22 ms/op | 0.46 |
mainnet_e81889 - altair processJustificationAndFinalization | 22.249 us/op | 53.413 us/op | 0.42 |
mainnet_e81889 - altair processInactivityUpdates | 5.2347 ms/op | 9.1277 ms/op | 0.57 |
mainnet_e81889 - altair processRewardsAndPenalties | 69.975 ms/op | 120.70 ms/op | 0.58 |
mainnet_e81889 - altair processRegistryUpdates | 2.3360 us/op | 5.4250 us/op | 0.43 |
mainnet_e81889 - altair processSlashings | 586.00 ns/op | 853.00 ns/op | 0.69 |
mainnet_e81889 - altair processEth1DataReset | 656.00 ns/op | 1.2180 us/op | 0.54 |
mainnet_e81889 - altair processEffectiveBalanceUpdates | 2.5044 ms/op | 6.2420 ms/op | 0.40 |
mainnet_e81889 - altair processSlashingsReset | 4.6020 us/op | 9.1910 us/op | 0.50 |
mainnet_e81889 - altair processRandaoMixesReset | 6.6600 us/op | 5.3550 us/op | 1.24 |
mainnet_e81889 - altair processHistoricalRootsUpdate | 959.00 ns/op | 896.00 ns/op | 1.07 |
mainnet_e81889 - altair processParticipationFlagUpdates | 3.7420 us/op | 7.5430 us/op | 0.50 |
mainnet_e81889 - altair processSyncCommitteeUpdates | 1000.0 ns/op | 2.7760 us/op | 0.36 |
mainnet_e81889 - altair afterProcessEpoch | 121.94 ms/op | 195.28 ms/op | 0.62 |
capella processEpoch - mainnet_e217614 | 1.6949 s/op | 2.3104 s/op | 0.73 |
mainnet_e217614 - capella beforeProcessEpoch | 288.03 ms/op | 348.89 ms/op | 0.83 |
mainnet_e217614 - capella processJustificationAndFinalization | 17.648 us/op | 19.271 us/op | 0.92 |
mainnet_e217614 - capella processInactivityUpdates | 19.764 ms/op | 20.650 ms/op | 0.96 |
mainnet_e217614 - capella processRewardsAndPenalties | 290.14 ms/op | 323.68 ms/op | 0.90 |
mainnet_e217614 - capella processRegistryUpdates | 24.217 us/op | 25.347 us/op | 0.96 |
mainnet_e217614 - capella processSlashings | 455.00 ns/op | 489.00 ns/op | 0.93 |
mainnet_e217614 - capella processEth1DataReset | 515.00 ns/op | 445.00 ns/op | 1.16 |
mainnet_e217614 - capella processEffectiveBalanceUpdates | 14.472 ms/op | 5.0352 ms/op | 2.87 |
mainnet_e217614 - capella processSlashingsReset | 2.9520 us/op | 3.0600 us/op | 0.96 |
mainnet_e217614 - capella processRandaoMixesReset | 4.1920 us/op | 4.4080 us/op | 0.95 |
mainnet_e217614 - capella processHistoricalRootsUpdate | 798.00 ns/op | 604.00 ns/op | 1.32 |
mainnet_e217614 - capella processParticipationFlagUpdates | 1.9480 us/op | 1.3410 us/op | 1.45 |
mainnet_e217614 - capella afterProcessEpoch | 352.19 ms/op | 397.69 ms/op | 0.89 |
phase0 processEpoch - mainnet_e58758 | 560.31 ms/op | 553.38 ms/op | 1.01 |
mainnet_e58758 - phase0 beforeProcessEpoch | 136.04 ms/op | 206.70 ms/op | 0.66 |
mainnet_e58758 - phase0 processJustificationAndFinalization | 17.902 us/op | 21.247 us/op | 0.84 |
mainnet_e58758 - phase0 processRewardsAndPenalties | 34.101 ms/op | 44.161 ms/op | 0.77 |
mainnet_e58758 - phase0 processRegistryUpdates | 12.947 us/op | 11.768 us/op | 1.10 |
mainnet_e58758 - phase0 processSlashings | 648.00 ns/op | 475.00 ns/op | 1.36 |
mainnet_e58758 - phase0 processEth1DataReset | 530.00 ns/op | 504.00 ns/op | 1.05 |
mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.3307 ms/op | 1.9309 ms/op | 0.69 |
mainnet_e58758 - phase0 processSlashingsReset | 5.2520 us/op | 4.8400 us/op | 1.09 |
mainnet_e58758 - phase0 processRandaoMixesReset | 6.3210 us/op | 7.2610 us/op | 0.87 |
mainnet_e58758 - phase0 processHistoricalRootsUpdate | 713.00 ns/op | 720.00 ns/op | 0.99 |
mainnet_e58758 - phase0 processParticipationRecordUpdates | 5.6190 us/op | 6.0190 us/op | 0.93 |
mainnet_e58758 - phase0 afterProcessEpoch | 103.25 ms/op | 214.48 ms/op | 0.48 |
phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.3410 ms/op | 1.8546 ms/op | 0.72 |
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.8165 ms/op | 1.7389 ms/op | 1.04 |
altair processInactivityUpdates - 250000 normalcase | 20.148 ms/op | 25.693 ms/op | 0.78 |
altair processInactivityUpdates - 250000 worstcase | 18.936 ms/op | 39.047 ms/op | 0.48 |
phase0 processRegistryUpdates - 250000 normalcase | 14.243 us/op | 14.436 us/op | 0.99 |
phase0 processRegistryUpdates - 250000 badcase_full_deposits | 508.27 us/op | 847.30 us/op | 0.60 |
phase0 processRegistryUpdates - 250000 worstcase 0.5 | 169.71 ms/op | 219.19 ms/op | 0.77 |
altair processRewardsAndPenalties - 250000 normalcase | 47.585 ms/op | 70.435 ms/op | 0.68 |
altair processRewardsAndPenalties - 250000 worstcase | 50.334 ms/op | 61.309 ms/op | 0.82 |
phase0 getAttestationDeltas - 250000 normalcase | 9.0161 ms/op | 14.521 ms/op | 0.62 |
phase0 getAttestationDeltas - 250000 worstcase | 9.5730 ms/op | 12.249 ms/op | 0.78 |
phase0 processSlashings - 250000 worstcase | 128.49 us/op | 92.518 us/op | 1.39 |
altair processSyncCommitteeUpdates - 250000 | 154.14 ms/op | 213.08 ms/op | 0.72 |
BeaconState.hashTreeRoot - No change | 529.00 ns/op | 960.00 ns/op | 0.55 |
BeaconState.hashTreeRoot - 1 full validator | 129.38 us/op | 194.16 us/op | 0.67 |
BeaconState.hashTreeRoot - 32 full validator | 2.0305 ms/op | 1.9199 ms/op | 1.06 |
BeaconState.hashTreeRoot - 512 full validator | 19.201 ms/op | 27.923 ms/op | 0.69 |
BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 162.40 us/op | 283.44 us/op | 0.57 |
BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 2.5640 ms/op | 3.0884 ms/op | 0.83 |
BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 28.875 ms/op | 30.902 ms/op | 0.93 |
BeaconState.hashTreeRoot - 1 balances | 125.23 us/op | 191.49 us/op | 0.65 |
BeaconState.hashTreeRoot - 32 balances | 1.1911 ms/op | 1.5638 ms/op | 0.76 |
BeaconState.hashTreeRoot - 512 balances | 10.228 ms/op | 20.024 ms/op | 0.51 |
BeaconState.hashTreeRoot - 250000 balances | 252.47 ms/op | 281.13 ms/op | 0.90 |
aggregationBits - 2048 els - zipIndexesInBitList | 35.513 us/op | 37.695 us/op | 0.94 |
byteArrayEquals 32 | 77.123 ns/op | 164.66 ns/op | 0.47 |
Buffer.compare 32 | 57.166 ns/op | 128.39 ns/op | 0.45 |
byteArrayEquals 1024 | 2.3441 us/op | 6.0662 us/op | 0.39 |
Buffer.compare 1024 | 75.842 ns/op | 208.96 ns/op | 0.36 |
byteArrayEquals 16384 | 36.497 us/op | 52.783 us/op | 0.69 |
Buffer.compare 16384 | 311.18 ns/op | 336.36 ns/op | 0.93 |
byteArrayEquals 123687377 | 253.11 ms/op | 422.08 ms/op | 0.60 |
Buffer.compare 123687377 | 10.094 ms/op | 8.8872 ms/op | 1.14 |
byteArrayEquals 32 - diff last byte | 78.574 ns/op | 102.57 ns/op | 0.77 |
Buffer.compare 32 - diff last byte | 60.329 ns/op | 88.388 ns/op | 0.68 |
byteArrayEquals 1024 - diff last byte | 2.1396 us/op | 4.2711 us/op | 0.50 |
Buffer.compare 1024 - diff last byte | 75.048 ns/op | 126.94 ns/op | 0.59 |
byteArrayEquals 16384 - diff last byte | 33.019 us/op | 49.907 us/op | 0.66 |
Buffer.compare 16384 - diff last byte | 277.14 ns/op | 343.93 ns/op | 0.81 |
byteArrayEquals 123687377 - diff last byte | 249.18 ms/op | 482.80 ms/op | 0.52 |
Buffer.compare 123687377 - diff last byte | 11.380 ms/op | 9.1040 ms/op | 1.25 |
byteArrayEquals 32 - random bytes | 7.2840 ns/op | 12.403 ns/op | 0.59 |
Buffer.compare 32 - random bytes | 70.270 ns/op | 127.04 ns/op | 0.55 |
byteArrayEquals 1024 - random bytes | 6.8460 ns/op | 14.640 ns/op | 0.47 |
Buffer.compare 1024 - random bytes | 65.300 ns/op | 135.09 ns/op | 0.48 |
byteArrayEquals 16384 - random bytes | 6.8920 ns/op | 16.974 ns/op | 0.41 |
Buffer.compare 16384 - random bytes | 67.710 ns/op | 174.58 ns/op | 0.39 |
byteArrayEquals 123687377 - random bytes | 11.730 ns/op | 25.280 ns/op | 0.46 |
Buffer.compare 123687377 - random bytes | 80.610 ns/op | 190.83 ns/op | 0.42 |
regular array get 100000 times | 49.741 us/op | 110.71 us/op | 0.45 |
wrappedArray get 100000 times | 50.407 us/op | 100.81 us/op | 0.50 |
arrayWithProxy get 100000 times | 15.760 ms/op | 37.669 ms/op | 0.42 |
ssz.Root.equals | 60.366 ns/op | 168.49 ns/op | 0.36 |
byteArrayEquals | 59.316 ns/op | 161.81 ns/op | 0.37 |
Buffer.compare | 17.677 ns/op | 32.746 ns/op | 0.54 |
shuffle list - 16384 els | 12.018 ms/op | 26.524 ms/op | 0.45 |
shuffle list - 250000 els | 170.91 ms/op | 380.60 ms/op | 0.45 |
processSlot - 1 slots | 26.251 us/op | 44.354 us/op | 0.59 |
processSlot - 32 slots | 5.3212 ms/op | 8.1109 ms/op | 0.66 |
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 82.417 ms/op | 167.01 ms/op | 0.49 |
getCommitteeAssignments - req 1 vs - 250000 vc | 3.2414 ms/op | 8.7768 ms/op | 0.37 |
getCommitteeAssignments - req 100 vs - 250000 vc | 4.5978 ms/op | 11.986 ms/op | 0.38 |
getCommitteeAssignments - req 1000 vs - 250000 vc | 5.2939 ms/op | 14.745 ms/op | 0.36 |
findModifiedValidators - 10000 modified validators | 660.16 ms/op | 1.1368 s/op | 0.58 |
findModifiedValidators - 1000 modified validators | 469.96 ms/op | 876.43 ms/op | 0.54 |
findModifiedValidators - 100 modified validators | 385.84 ms/op | 785.94 ms/op | 0.49 |
findModifiedValidators - 10 modified validators | 298.78 ms/op | 722.83 ms/op | 0.41 |
findModifiedValidators - 1 modified validators | 319.81 ms/op | 773.27 ms/op | 0.41 |
findModifiedValidators - no difference | 251.45 ms/op | 702.18 ms/op | 0.36 |
compare ViewDUs | 4.5875 s/op | 9.7908 s/op | 0.47 |
compare each validator Uint8Array | 1.9742 s/op | 3.6924 s/op | 0.53 |
compare ViewDU to Uint8Array | 1.6556 s/op | 3.9297 s/op | 0.42 |
migrate state 1000000 validators, 24 modified, 0 new | 975.08 ms/op | 2.5827 s/op | 0.38 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.3736 s/op | 4.6549 s/op | 0.30 |
migrate state 1000000 validators, 3400 modified, 2000 new | 1.7499 s/op | 4.8929 s/op | 0.36 |
migrate state 1500000 validators, 24 modified, 0 new | 1.0326 s/op | 2.4157 s/op | 0.43 |
migrate state 1500000 validators, 1700 modified, 1000 new | 1.8976 s/op | 3.9785 s/op | 0.48 |
migrate state 1500000 validators, 3400 modified, 2000 new | 2.0605 s/op | 5.1021 s/op | 0.40 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.5800 ns/op | 19.810 ns/op | 0.28 |
state getBlockRootAtSlot - 250000 vs - 7PWei | 890.79 ns/op | 1.8982 us/op | 0.47 |
computeProposers - vc 250000 | 13.663 ms/op | 31.089 ms/op | 0.44 |
computeEpochShuffling - vc 250000 | 142.10 ms/op | 500.90 ms/op | 0.28 |
getNextSyncCommittee - vc 250000 | 196.26 ms/op | 561.19 ms/op | 0.35 |
computeSigningRoot for AttestationData | 35.149 us/op | 92.298 us/op | 0.38 |
hash AttestationData serialized data then Buffer.toString(base64) | 2.4461 us/op | 7.5467 us/op | 0.32 |
toHexString serialized data | 1.4267 us/op | 4.3130 us/op | 0.33 |
Buffer.toString(base64) | 273.33 ns/op | 810.64 ns/op | 0.34 |
by benchmarkbot/action