lodestar
lodestar copied to clipboard
chore: add eslint rule to prevent unused expressions
Motivation
Closes https://github.com/ChainSafe/lodestar/issues/5505
Description
Add eslint rule to prevent unused expressions
:warning: Performance Alert :warning:
Possible performance regression was detected for some benchmarks. Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.
| Benchmark suite | Current: 29fe65135518a04382640916ccc279a739cdcf1e | Previous: 8959bda79bd3d86610efd88c99af7b1f7b4207f0 | Ratio |
|---|---|---|---|
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 166.55 us/op | 52.713 us/op | 3.16 |
| Object set x1000 | 107.20 ns/op | 25.506 ns/op | 4.20 |
| Map set x1000 | 74.460 ns/op | 18.433 ns/op | 4.04 |
| fastMsgIdFn sha256 / 1000 bytes | 21.135 us/op | 5.9550 us/op | 3.55 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 1.3670 us/op | 446.00 ns/op | 3.07 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 55.427 ms/op | 12.158 ms/op | 4.56 |
| altair processAttestation - setStatus - 1/6 committees join | 250.22 us/op | 75.732 us/op | 3.30 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 1.4741 ms/op | 304.15 us/op | 4.85 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 27.159 us/op | 8.3040 us/op | 3.27 |
| Buffer.compare 123687377 | 12.001 ms/op | 3.8142 ms/op | 3.15 |
Full benchmark results
| Benchmark suite | Current: 29fe65135518a04382640916ccc279a739cdcf1e | Previous: 8959bda79bd3d86610efd88c99af7b1f7b4207f0 | Ratio |
|---|---|---|---|
| getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 876.13 us/op | 386.77 us/op | 2.27 |
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 166.55 us/op | 52.713 us/op | 3.16 |
| BLS verify - blst-native | 1.5002 ms/op | 1.1065 ms/op | 1.36 |
| BLS verifyMultipleSignatures 3 - blst-native | 3.1914 ms/op | 2.4125 ms/op | 1.32 |
| BLS verifyMultipleSignatures 8 - blst-native | 6.9637 ms/op | 5.2622 ms/op | 1.32 |
| BLS verifyMultipleSignatures 32 - blst-native | 25.305 ms/op | 19.393 ms/op | 1.30 |
| BLS verifyMultipleSignatures 64 - blst-native | 51.545 ms/op | 38.213 ms/op | 1.35 |
| BLS verifyMultipleSignatures 128 - blst-native | 105.46 ms/op | 75.454 ms/op | 1.40 |
| BLS deserializing 10000 signatures | 1.0613 s/op | 797.14 ms/op | 1.33 |
| BLS deserializing 100000 signatures | 10.379 s/op | 8.2573 s/op | 1.26 |
| BLS verifyMultipleSignatures - same message - 3 - blst-native | 1.6982 ms/op | 1.1121 ms/op | 1.53 |
| BLS verifyMultipleSignatures - same message - 8 - blst-native | 2.0284 ms/op | 1.2572 ms/op | 1.61 |
| BLS verifyMultipleSignatures - same message - 32 - blst-native | 2.9984 ms/op | 1.9712 ms/op | 1.52 |
| BLS verifyMultipleSignatures - same message - 64 - blst-native | 4.2556 ms/op | 3.7683 ms/op | 1.13 |
| BLS verifyMultipleSignatures - same message - 128 - blst-native | 7.2848 ms/op | 4.8938 ms/op | 1.49 |
| BLS aggregatePubkeys 32 - blst-native | 32.541 us/op | 22.071 us/op | 1.47 |
| BLS aggregatePubkeys 128 - blst-native | 118.66 us/op | 86.402 us/op | 1.37 |
| notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 77.528 ms/op | 45.012 ms/op | 1.72 |
| notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 70.843 ms/op | 42.561 ms/op | 1.66 |
| notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 48.523 ms/op | 25.926 ms/op | 1.87 |
| getSlashingsAndExits - default max | 336.76 us/op | 223.06 us/op | 1.51 |
| getSlashingsAndExits - 2k | 742.95 us/op | 350.91 us/op | 2.12 |
| proposeBlockBody type=full, size=empty | 6.5753 ms/op | 3.7844 ms/op | 1.74 |
| isKnown best case - 1 super set check | 624.00 ns/op | 474.00 ns/op | 1.32 |
| isKnown normal case - 2 super set checks | 628.00 ns/op | 389.00 ns/op | 1.61 |
| isKnown worse case - 16 super set checks | 612.00 ns/op | 340.00 ns/op | 1.80 |
| CheckpointStateCache - add get delete | 6.7290 us/op | 3.7860 us/op | 1.78 |
| validate api signedAggregateAndProof - struct | 3.1509 ms/op | 2.3719 ms/op | 1.33 |
| validate gossip signedAggregateAndProof - struct | 3.2581 ms/op | 2.2532 ms/op | 1.45 |
| validate gossip attestation - vc 640000 | 1.5072 ms/op | 1.1302 ms/op | 1.33 |
| batch validate gossip attestation - vc 640000 - chunk 32 | 199.10 us/op | 138.19 us/op | 1.44 |
| batch validate gossip attestation - vc 640000 - chunk 64 | 175.47 us/op | 128.71 us/op | 1.36 |
| batch validate gossip attestation - vc 640000 - chunk 128 | 178.71 us/op | 124.56 us/op | 1.43 |
| batch validate gossip attestation - vc 640000 - chunk 256 | 194.16 us/op | 114.03 us/op | 1.70 |
| pickEth1Vote - no votes | 2.2389 ms/op | 874.46 us/op | 2.56 |
| pickEth1Vote - max votes | 23.060 ms/op | 9.2615 ms/op | 2.49 |
| pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 31.840 ms/op | 21.090 ms/op | 1.51 |
| pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 46.705 ms/op | 26.025 ms/op | 1.79 |
| pickEth1Vote - Eth1Data fastSerialize value x2048 | 1.0461 ms/op | 412.58 us/op | 2.54 |
| pickEth1Vote - Eth1Data fastSerialize tree x2048 | 12.054 ms/op | 5.8079 ms/op | 2.08 |
| bytes32 toHexString | 1.0850 us/op | 458.00 ns/op | 2.37 |
| bytes32 Buffer.toString(hex) | 349.00 ns/op | 311.00 ns/op | 1.12 |
| bytes32 Buffer.toString(hex) from Uint8Array | 840.00 ns/op | 447.00 ns/op | 1.88 |
| bytes32 Buffer.toString(hex) + 0x | 427.00 ns/op | 309.00 ns/op | 1.38 |
| Object access 1 prop | 0.29400 ns/op | 0.22000 ns/op | 1.34 |
| Map access 1 prop | 0.19600 ns/op | 0.20700 ns/op | 0.95 |
| Object get x1000 | 10.124 ns/op | 4.8920 ns/op | 2.07 |
| Map get x1000 | 1.0650 ns/op | 0.75400 ns/op | 1.41 |
| Object set x1000 | 107.20 ns/op | 25.506 ns/op | 4.20 |
| Map set x1000 | 74.460 ns/op | 18.433 ns/op | 4.04 |
| Return object 10000 times | 0.35390 ns/op | 0.22100 ns/op | 1.60 |
| Throw Error 10000 times | 5.3082 us/op | 2.6150 us/op | 2.03 |
| fastMsgIdFn sha256 / 200 bytes | 4.3610 us/op | 1.9720 us/op | 2.21 |
| fastMsgIdFn h32 xxhash / 200 bytes | 520.00 ns/op | 322.00 ns/op | 1.61 |
| fastMsgIdFn h64 xxhash / 200 bytes | 637.00 ns/op | 340.00 ns/op | 1.87 |
| fastMsgIdFn sha256 / 1000 bytes | 21.135 us/op | 5.9550 us/op | 3.55 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 1.3670 us/op | 446.00 ns/op | 3.07 |
| fastMsgIdFn h64 xxhash / 1000 bytes | 1.2600 us/op | 427.00 ns/op | 2.95 |
| fastMsgIdFn sha256 / 10000 bytes | 127.73 us/op | 50.483 us/op | 2.53 |
| fastMsgIdFn h32 xxhash / 10000 bytes | 3.4360 us/op | 1.7950 us/op | 1.91 |
| fastMsgIdFn h64 xxhash / 10000 bytes | 2.1040 us/op | 1.2490 us/op | 1.68 |
| send data - 1000 256B messages | 29.130 ms/op | 13.509 ms/op | 2.16 |
| send data - 1000 512B messages | 38.427 ms/op | 16.686 ms/op | 2.30 |
| send data - 1000 1024B messages | 67.546 ms/op | 31.195 ms/op | 2.17 |
| send data - 1000 1200B messages | 76.527 ms/op | 30.750 ms/op | 2.49 |
| send data - 1000 2048B messages | 87.816 ms/op | 38.646 ms/op | 2.27 |
| send data - 1000 4096B messages | 76.141 ms/op | 38.966 ms/op | 1.95 |
| send data - 1000 16384B messages | 195.78 ms/op | 92.689 ms/op | 2.11 |
| send data - 1000 65536B messages | 739.55 ms/op | 456.11 ms/op | 1.62 |
| enrSubnets - fastDeserialize 64 bits | 2.3140 us/op | 1.0360 us/op | 2.23 |
| enrSubnets - ssz BitVector 64 bits | 660.00 ns/op | 502.00 ns/op | 1.31 |
| enrSubnets - fastDeserialize 4 bits | 285.00 ns/op | 254.00 ns/op | 1.12 |
| enrSubnets - ssz BitVector 4 bits | 717.00 ns/op | 515.00 ns/op | 1.39 |
| prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 165.76 us/op | 103.95 us/op | 1.59 |
| prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 193.28 us/op | 114.04 us/op | 1.69 |
| prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 247.88 us/op | 146.76 us/op | 1.69 |
| prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 450.53 us/op | 260.80 us/op | 1.73 |
| prioritizePeers score 0:0 att 64-1 sync 4-1 | 577.49 us/op | 277.13 us/op | 2.08 |
| array of 16000 items push then shift | 1.9862 us/op | 1.3783 us/op | 1.44 |
| LinkedList of 16000 items push then shift | 13.657 ns/op | 8.5800 ns/op | 1.59 |
| array of 16000 items push then pop | 172.60 ns/op | 113.41 ns/op | 1.52 |
| LinkedList of 16000 items push then pop | 13.457 ns/op | 7.7260 ns/op | 1.74 |
| array of 24000 items push then shift | 3.0381 us/op | 1.8896 us/op | 1.61 |
| LinkedList of 24000 items push then shift | 14.883 ns/op | 7.5310 ns/op | 1.98 |
| array of 24000 items push then pop | 236.07 ns/op | 150.20 ns/op | 1.57 |
| LinkedList of 24000 items push then pop | 11.928 ns/op | 6.0850 ns/op | 1.96 |
| intersect bitArray bitLen 8 | 7.5530 ns/op | 4.9080 ns/op | 1.54 |
| intersect array and set length 8 | 128.36 ns/op | 50.458 ns/op | 2.54 |
| intersect bitArray bitLen 128 | 42.583 ns/op | 29.444 ns/op | 1.45 |
| intersect array and set length 128 | 1.5510 us/op | 696.32 ns/op | 2.23 |
| bitArray.getTrueBitIndexes() bitLen 128 | 2.6330 us/op | 1.3890 us/op | 1.90 |
| bitArray.getTrueBitIndexes() bitLen 248 | 4.7130 us/op | 2.9850 us/op | 1.58 |
| bitArray.getTrueBitIndexes() bitLen 512 | 8.9570 us/op | 6.3790 us/op | 1.40 |
| Buffer.concat 32 items | 1.3600 us/op | 1.0400 us/op | 1.31 |
| Uint8Array.set 32 items | 3.0870 us/op | 2.3270 us/op | 1.33 |
| Set add up to 64 items then delete first | 6.7430 us/op | 2.4738 us/op | 2.73 |
| OrderedSet add up to 64 items then delete first | 9.4737 us/op | 3.8685 us/op | 2.45 |
| Set add up to 64 items then delete last | 6.9811 us/op | 2.7309 us/op | 2.56 |
| OrderedSet add up to 64 items then delete last | 9.8245 us/op | 3.7934 us/op | 2.59 |
| Set add up to 64 items then delete middle | 7.1311 us/op | 2.3774 us/op | 3.00 |
| OrderedSet add up to 64 items then delete middle | 10.479 us/op | 5.2910 us/op | 1.98 |
| Set add up to 128 items then delete first | 14.201 us/op | 5.0557 us/op | 2.81 |
| OrderedSet add up to 128 items then delete first | 19.236 us/op | 8.5599 us/op | 2.25 |
| Set add up to 128 items then delete last | 13.772 us/op | 5.4318 us/op | 2.54 |
| OrderedSet add up to 128 items then delete last | 17.943 us/op | 8.5114 us/op | 2.11 |
| Set add up to 128 items then delete middle | 13.751 us/op | 5.1232 us/op | 2.68 |
| OrderedSet add up to 128 items then delete middle | 25.439 us/op | 13.268 us/op | 1.92 |
| Set add up to 256 items then delete first | 27.115 us/op | 11.025 us/op | 2.46 |
| OrderedSet add up to 256 items then delete first | 38.856 us/op | 16.499 us/op | 2.36 |
| Set add up to 256 items then delete last | 26.778 us/op | 10.382 us/op | 2.58 |
| OrderedSet add up to 256 items then delete last | 36.961 us/op | 15.686 us/op | 2.36 |
| Set add up to 256 items then delete middle | 26.618 us/op | 10.915 us/op | 2.44 |
| OrderedSet add up to 256 items then delete middle | 63.579 us/op | 36.435 us/op | 1.74 |
| transfer serialized Status (84 B) | 2.8240 us/op | 1.5920 us/op | 1.77 |
| copy serialized Status (84 B) | 2.0060 us/op | 1.3100 us/op | 1.53 |
| transfer serialized SignedVoluntaryExit (112 B) | 2.6830 us/op | 1.7400 us/op | 1.54 |
| copy serialized SignedVoluntaryExit (112 B) | 1.9260 us/op | 1.3480 us/op | 1.43 |
| transfer serialized ProposerSlashing (416 B) | 3.0050 us/op | 2.3590 us/op | 1.27 |
| copy serialized ProposerSlashing (416 B) | 2.8250 us/op | 2.4810 us/op | 1.14 |
| transfer serialized Attestation (485 B) | 3.6780 us/op | 2.7570 us/op | 1.33 |
| copy serialized Attestation (485 B) | 3.4760 us/op | 2.6620 us/op | 1.31 |
| transfer serialized AttesterSlashing (33232 B) | 3.8540 us/op | 2.8950 us/op | 1.33 |
| copy serialized AttesterSlashing (33232 B) | 15.181 us/op | 10.299 us/op | 1.47 |
| transfer serialized Small SignedBeaconBlock (128000 B) | 7.9670 us/op | 2.8030 us/op | 2.84 |
| copy serialized Small SignedBeaconBlock (128000 B) | 43.703 us/op | 11.933 us/op | 3.66 |
| transfer serialized Avg SignedBeaconBlock (200000 B) | 8.2370 us/op | 2.4200 us/op | 3.40 |
| copy serialized Avg SignedBeaconBlock (200000 B) | 73.909 us/op | 56.162 us/op | 1.32 |
| transfer serialized BlobsSidecar (524380 B) | 9.3680 us/op | 2.6150 us/op | 3.58 |
| copy serialized BlobsSidecar (524380 B) | 201.80 us/op | 75.719 us/op | 2.67 |
| transfer serialized Big SignedBeaconBlock (1000000 B) | 9.3820 us/op | 2.6830 us/op | 3.50 |
| copy serialized Big SignedBeaconBlock (1000000 B) | 369.02 us/op | 292.08 us/op | 1.26 |
| pass gossip attestations to forkchoice per slot | 4.4741 ms/op | 2.9304 ms/op | 1.53 |
| forkChoice updateHead vc 100000 bc 64 eq 0 | 777.84 us/op | 492.15 us/op | 1.58 |
| forkChoice updateHead vc 600000 bc 64 eq 0 | 6.9255 ms/op | 3.2767 ms/op | 2.11 |
| forkChoice updateHead vc 1000000 bc 64 eq 0 | 9.2159 ms/op | 6.3741 ms/op | 1.45 |
| forkChoice updateHead vc 600000 bc 320 eq 0 | 5.3851 ms/op | 2.6594 ms/op | 2.02 |
| forkChoice updateHead vc 600000 bc 1200 eq 0 | 5.4297 ms/op | 2.8068 ms/op | 1.93 |
| forkChoice updateHead vc 600000 bc 7200 eq 0 | 6.4534 ms/op | 3.5648 ms/op | 1.81 |
| forkChoice updateHead vc 600000 bc 64 eq 1000 | 12.475 ms/op | 9.8837 ms/op | 1.26 |
| forkChoice updateHead vc 600000 bc 64 eq 10000 | 13.789 ms/op | 9.6663 ms/op | 1.43 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 55.427 ms/op | 12.158 ms/op | 4.56 |
| computeDeltas 500000 validators 300 proto nodes | 7.7419 ms/op | 3.3531 ms/op | 2.31 |
| computeDeltas 500000 validators 1200 proto nodes | 7.9778 ms/op | 3.3802 ms/op | 2.36 |
| computeDeltas 500000 validators 7200 proto nodes | 8.5763 ms/op | 3.2492 ms/op | 2.64 |
| computeDeltas 750000 validators 300 proto nodes | 14.037 ms/op | 5.4233 ms/op | 2.59 |
| computeDeltas 750000 validators 1200 proto nodes | 13.377 ms/op | 5.1672 ms/op | 2.59 |
| computeDeltas 750000 validators 7200 proto nodes | 14.215 ms/op | 5.5880 ms/op | 2.54 |
| computeDeltas 1400000 validators 300 proto nodes | 24.860 ms/op | 10.850 ms/op | 2.29 |
| computeDeltas 1400000 validators 1200 proto nodes | 23.427 ms/op | 10.587 ms/op | 2.21 |
| computeDeltas 1400000 validators 7200 proto nodes | 22.684 ms/op | 9.3930 ms/op | 2.42 |
| computeDeltas 2100000 validators 300 proto nodes | 32.081 ms/op | 15.580 ms/op | 2.06 |
| computeDeltas 2100000 validators 1200 proto nodes | 32.155 ms/op | 16.707 ms/op | 1.92 |
| computeDeltas 2100000 validators 7200 proto nodes | 31.899 ms/op | 14.448 ms/op | 2.21 |
| altair processAttestation - 250000 vs - 7PWei normalcase | 3.8334 ms/op | 1.5358 ms/op | 2.50 |
| altair processAttestation - 250000 vs - 7PWei worstcase | 5.0485 ms/op | 2.6276 ms/op | 1.92 |
| altair processAttestation - setStatus - 1/6 committees join | 250.22 us/op | 75.732 us/op | 3.30 |
| altair processAttestation - setStatus - 1/3 committees join | 433.13 us/op | 158.53 us/op | 2.73 |
| altair processAttestation - setStatus - 1/2 committees join | 615.26 us/op | 214.24 us/op | 2.87 |
| altair processAttestation - setStatus - 2/3 committees join | 821.85 us/op | 284.28 us/op | 2.89 |
| altair processAttestation - setStatus - 4/5 committees join | 981.15 us/op | 446.22 us/op | 2.20 |
| altair processAttestation - setStatus - 100% committees join | 1.1685 ms/op | 555.52 us/op | 2.10 |
| altair processBlock - 250000 vs - 7PWei normalcase | 17.051 ms/op | 8.8400 ms/op | 1.93 |
| altair processBlock - 250000 vs - 7PWei normalcase hashState | 49.352 ms/op | 23.593 ms/op | 2.09 |
| altair processBlock - 250000 vs - 7PWei worstcase | 65.937 ms/op | 28.896 ms/op | 2.28 |
| altair processBlock - 250000 vs - 7PWei worstcase hashState | 192.57 ms/op | 73.332 ms/op | 2.63 |
| phase0 processBlock - 250000 vs - 7PWei normalcase | 6.1394 ms/op | 2.5752 ms/op | 2.38 |
| phase0 processBlock - 250000 vs - 7PWei worstcase | 49.253 ms/op | 24.642 ms/op | 2.00 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 1.4741 ms/op | 304.15 us/op | 4.85 |
| getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 29.824 us/op | 14.982 us/op | 1.99 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 97.555 us/op | 57.881 us/op | 1.69 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 47.776 us/op | 21.257 us/op | 2.25 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 27.159 us/op | 8.3040 us/op | 3.27 |
| getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 265.91 us/op | 155.26 us/op | 1.71 |
| getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 2.0204 ms/op | 1.0416 ms/op | 1.94 |
| getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 2.5888 ms/op | 1.4487 ms/op | 1.79 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 2.5064 ms/op | 1.0319 ms/op | 2.43 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 6.3028 ms/op | 3.0478 ms/op | 2.07 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 3.8001 ms/op | 1.5104 ms/op | 2.52 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 8.3537 ms/op | 5.4104 ms/op | 1.54 |
| Tree 40 250000 create | 530.10 ms/op | 348.45 ms/op | 1.52 |
| Tree 40 250000 get(125000) | 239.83 ns/op | 122.11 ns/op | 1.96 |
| Tree 40 250000 set(125000) | 1.8860 us/op | 841.70 ns/op | 2.24 |
| Tree 40 250000 toArray() | 34.164 ms/op | 25.457 ms/op | 1.34 |
| Tree 40 250000 iterate all - toArray() + loop | 33.690 ms/op | 26.073 ms/op | 1.29 |
| Tree 40 250000 iterate all - get(i) | 94.982 ms/op | 54.605 ms/op | 1.74 |
| MutableVector 250000 create | 20.578 ms/op | 12.246 ms/op | 1.68 |
| MutableVector 250000 get(125000) | 7.4170 ns/op | 5.7150 ns/op | 1.30 |
| MutableVector 250000 set(125000) | 409.97 ns/op | 221.35 ns/op | 1.85 |
| MutableVector 250000 toArray() | 4.9393 ms/op | 2.4479 ms/op | 2.02 |
| MutableVector 250000 iterate all - toArray() + loop | 4.7515 ms/op | 2.4492 ms/op | 1.94 |
| MutableVector 250000 iterate all - get(i) | 1.8277 ms/op | 1.3476 ms/op | 1.36 |
| Array 250000 create | 3.9892 ms/op | 2.3086 ms/op | 1.73 |
| Array 250000 clone - spread | 1.4651 ms/op | 1.1861 ms/op | 1.24 |
| Array 250000 get(125000) | 1.3290 ns/op | 1.0660 ns/op | 1.25 |
| Array 250000 set(125000) | 5.5410 ns/op | 2.0970 ns/op | 2.64 |
| Array 250000 iterate all - loop | 187.70 us/op | 155.19 us/op | 1.21 |
| effectiveBalanceIncrements clone Uint8Array 300000 | 66.110 us/op | 53.953 us/op | 1.23 |
| effectiveBalanceIncrements clone MutableVector 300000 | 449.00 ns/op | 906.00 ns/op | 0.50 |
| effectiveBalanceIncrements rw all Uint8Array 300000 | 237.43 us/op | 184.71 us/op | 1.29 |
| effectiveBalanceIncrements rw all MutableVector 300000 | 168.39 ms/op | 113.57 ms/op | 1.48 |
| phase0 afterProcessEpoch - 250000 vs - 7PWei | 135.72 ms/op | 78.605 ms/op | 1.73 |
| phase0 beforeProcessEpoch - 250000 vs - 7PWei | 65.156 ms/op | 35.742 ms/op | 1.82 |
| altair processEpoch - mainnet_e81889 | 617.20 ms/op | 472.21 ms/op | 1.31 |
| mainnet_e81889 - altair beforeProcessEpoch | 138.60 ms/op | 84.059 ms/op | 1.65 |
| mainnet_e81889 - altair processJustificationAndFinalization | 30.434 us/op | 14.334 us/op | 2.12 |
| mainnet_e81889 - altair processInactivityUpdates | 11.921 ms/op | 3.8011 ms/op | 3.14 |
| mainnet_e81889 - altair processRewardsAndPenalties | 107.78 ms/op | 54.907 ms/op | 1.96 |
| mainnet_e81889 - altair processRegistryUpdates | 8.6940 us/op | 2.1410 us/op | 4.06 |
| mainnet_e81889 - altair processSlashings | 1.0590 us/op | 641.00 ns/op | 1.65 |
| mainnet_e81889 - altair processEth1DataReset | 799.00 ns/op | 720.00 ns/op | 1.11 |
| mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.6135 ms/op | 1.0622 ms/op | 1.52 |
| mainnet_e81889 - altair processSlashingsReset | 7.6140 us/op | 2.8640 us/op | 2.66 |
| mainnet_e81889 - altair processRandaoMixesReset | 11.643 us/op | 4.4560 us/op | 2.61 |
| mainnet_e81889 - altair processHistoricalRootsUpdate | 1.7560 us/op | 1.0610 us/op | 1.66 |
| mainnet_e81889 - altair processParticipationFlagUpdates | 5.3190 us/op | 2.0930 us/op | 2.54 |
| mainnet_e81889 - altair processSyncCommitteeUpdates | 2.1630 us/op | 800.00 ns/op | 2.70 |
| mainnet_e81889 - altair afterProcessEpoch | 159.77 ms/op | 80.468 ms/op | 1.99 |
| capella processEpoch - mainnet_e217614 | 2.4801 s/op | 2.2908 s/op | 1.08 |
| mainnet_e217614 - capella beforeProcessEpoch | 562.40 ms/op | 493.64 ms/op | 1.14 |
| mainnet_e217614 - capella processJustificationAndFinalization | 22.875 us/op | 11.707 us/op | 1.95 |
| mainnet_e217614 - capella processInactivityUpdates | 23.910 ms/op | 16.809 ms/op | 1.42 |
| mainnet_e217614 - capella processRewardsAndPenalties | 497.12 ms/op | 408.24 ms/op | 1.22 |
| mainnet_e217614 - capella processRegistryUpdates | 31.264 us/op | 26.900 us/op | 1.16 |
| mainnet_e217614 - capella processSlashings | 831.00 ns/op | 834.00 ns/op | 1.00 |
| mainnet_e217614 - capella processEth1DataReset | 933.00 ns/op | 607.00 ns/op | 1.54 |
| mainnet_e217614 - capella processEffectiveBalanceUpdates | 6.5310 ms/op | 3.5460 ms/op | 1.84 |
| mainnet_e217614 - capella processSlashingsReset | 5.7360 us/op | 4.0820 us/op | 1.41 |
| mainnet_e217614 - capella processRandaoMixesReset | 6.2880 us/op | 6.3540 us/op | 0.99 |
| mainnet_e217614 - capella processHistoricalRootsUpdate | 663.00 ns/op | 740.00 ns/op | 0.90 |
| mainnet_e217614 - capella processParticipationFlagUpdates | 1.7550 us/op | 3.4750 us/op | 0.51 |
| mainnet_e217614 - capella afterProcessEpoch | 320.88 ms/op | 249.28 ms/op | 1.29 |
| phase0 processEpoch - mainnet_e58758 | 790.64 ms/op | 481.82 ms/op | 1.64 |
| mainnet_e58758 - phase0 beforeProcessEpoch | 197.73 ms/op | 155.49 ms/op | 1.27 |
| mainnet_e58758 - phase0 processJustificationAndFinalization | 24.139 us/op | 17.263 us/op | 1.40 |
| mainnet_e58758 - phase0 processRewardsAndPenalties | 47.186 ms/op | 48.699 ms/op | 0.97 |
| mainnet_e58758 - phase0 processRegistryUpdates | 17.828 us/op | 10.676 us/op | 1.67 |
| mainnet_e58758 - phase0 processSlashings | 1.5140 us/op | 650.00 ns/op | 2.33 |
| mainnet_e58758 - phase0 processEth1DataReset | 827.00 ns/op | 918.00 ns/op | 0.90 |
| mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.4301 ms/op | 1.2024 ms/op | 1.19 |
| mainnet_e58758 - phase0 processSlashingsReset | 7.1760 us/op | 3.3100 us/op | 2.17 |
| mainnet_e58758 - phase0 processRandaoMixesReset | 10.479 us/op | 4.5170 us/op | 2.32 |
| mainnet_e58758 - phase0 processHistoricalRootsUpdate | 912.00 ns/op | 808.00 ns/op | 1.13 |
| mainnet_e58758 - phase0 processParticipationRecordUpdates | 10.252 us/op | 5.0270 us/op | 2.04 |
| mainnet_e58758 - phase0 afterProcessEpoch | 118.54 ms/op | 69.275 ms/op | 1.71 |
| phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.6187 ms/op | 1.1321 ms/op | 1.43 |
| phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.7312 ms/op | 1.1581 ms/op | 1.49 |
| altair processInactivityUpdates - 250000 normalcase | 33.182 ms/op | 24.925 ms/op | 1.33 |
| altair processInactivityUpdates - 250000 worstcase | 31.999 ms/op | 25.949 ms/op | 1.23 |
| phase0 processRegistryUpdates - 250000 normalcase | 17.546 us/op | 11.290 us/op | 1.55 |
| phase0 processRegistryUpdates - 250000 badcase_full_deposits | 543.92 us/op | 454.13 us/op | 1.20 |
| phase0 processRegistryUpdates - 250000 worstcase 0.5 | 172.61 ms/op | 112.40 ms/op | 1.54 |
| altair processRewardsAndPenalties - 250000 normalcase | 52.047 ms/op | 45.606 ms/op | 1.14 |
| altair processRewardsAndPenalties - 250000 worstcase | 75.742 ms/op | 55.275 ms/op | 1.37 |
| phase0 getAttestationDeltas - 250000 normalcase | 10.883 ms/op | 6.6142 ms/op | 1.65 |
| phase0 getAttestationDeltas - 250000 worstcase | 14.314 ms/op | 7.1375 ms/op | 2.01 |
| phase0 processSlashings - 250000 worstcase | 126.87 us/op | 90.993 us/op | 1.39 |
| altair processSyncCommitteeUpdates - 250000 | 194.07 ms/op | 114.25 ms/op | 1.70 |
| BeaconState.hashTreeRoot - No change | 836.00 ns/op | 400.00 ns/op | 2.09 |
| BeaconState.hashTreeRoot - 1 full validator | 166.92 us/op | 99.395 us/op | 1.68 |
| BeaconState.hashTreeRoot - 32 full validator | 2.1611 ms/op | 1.2990 ms/op | 1.66 |
| BeaconState.hashTreeRoot - 512 full validator | 21.343 ms/op | 11.733 ms/op | 1.82 |
| BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 208.18 us/op | 115.72 us/op | 1.80 |
| BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 3.0263 ms/op | 1.5978 ms/op | 1.89 |
| BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 37.173 ms/op | 29.077 ms/op | 1.28 |
| BeaconState.hashTreeRoot - 1 balances | 157.50 us/op | 105.56 us/op | 1.49 |
| BeaconState.hashTreeRoot - 32 balances | 1.4267 ms/op | 1.0607 ms/op | 1.35 |
| BeaconState.hashTreeRoot - 512 balances | 14.494 ms/op | 10.568 ms/op | 1.37 |
| BeaconState.hashTreeRoot - 250000 balances | 267.64 ms/op | 198.88 ms/op | 1.35 |
| aggregationBits - 2048 els - zipIndexesInBitList | 38.054 us/op | 10.883 us/op | 3.50 |
| byteArrayEquals 32 | 84.410 ns/op | 65.235 ns/op | 1.29 |
| Buffer.compare 32 | 62.039 ns/op | 38.035 ns/op | 1.63 |
| byteArrayEquals 1024 | 2.3282 us/op | 1.7410 us/op | 1.34 |
| Buffer.compare 1024 | 84.179 ns/op | 44.052 ns/op | 1.91 |
| byteArrayEquals 16384 | 36.811 us/op | 27.811 us/op | 1.32 |
| Buffer.compare 16384 | 286.48 ns/op | 227.19 ns/op | 1.26 |
| byteArrayEquals 123687377 | 302.61 ms/op | 207.50 ms/op | 1.46 |
| Buffer.compare 123687377 | 12.001 ms/op | 3.8142 ms/op | 3.15 |
| byteArrayEquals 32 - diff last byte | 95.554 ns/op | 61.457 ns/op | 1.55 |
| Buffer.compare 32 - diff last byte | 70.180 ns/op | 37.816 ns/op | 1.86 |
| byteArrayEquals 1024 - diff last byte | 2.2975 us/op | 1.7162 us/op | 1.34 |
| Buffer.compare 1024 - diff last byte | 85.612 ns/op | 45.785 ns/op | 1.87 |
| byteArrayEquals 16384 - diff last byte | 38.915 us/op | 27.584 us/op | 1.41 |
| Buffer.compare 16384 - diff last byte | 301.43 ns/op | 207.27 ns/op | 1.45 |
| byteArrayEquals 123687377 - diff last byte | 275.93 ms/op | 204.99 ms/op | 1.35 |
| Buffer.compare 123687377 - diff last byte | 10.353 ms/op | 5.9454 ms/op | 1.74 |
| byteArrayEquals 32 - random bytes | 7.7220 ns/op | 4.7510 ns/op | 1.63 |
| Buffer.compare 32 - random bytes | 67.220 ns/op | 43.743 ns/op | 1.54 |
| byteArrayEquals 1024 - random bytes | 6.8750 ns/op | 4.7270 ns/op | 1.45 |
| Buffer.compare 1024 - random bytes | 71.523 ns/op | 38.155 ns/op | 1.87 |
| byteArrayEquals 16384 - random bytes | 6.8300 ns/op | 4.9570 ns/op | 1.38 |
| Buffer.compare 16384 - random bytes | 64.825 ns/op | 40.818 ns/op | 1.59 |
| byteArrayEquals 123687377 - random bytes | 15.940 ns/op | 8.4600 ns/op | 1.88 |
| Buffer.compare 123687377 - random bytes | 90.560 ns/op | 41.250 ns/op | 2.20 |
| regular array get 100000 times | 54.514 us/op | 42.245 us/op | 1.29 |
| wrappedArray get 100000 times | 54.752 us/op | 42.612 us/op | 1.28 |
| arrayWithProxy get 100000 times | 22.939 ms/op | 10.620 ms/op | 2.16 |
| ssz.Root.equals | 62.079 ns/op | 58.258 ns/op | 1.07 |
| byteArrayEquals | 59.733 ns/op | 55.227 ns/op | 1.08 |
| Buffer.compare | 13.360 ns/op | 9.6700 ns/op | 1.38 |
| shuffle list - 16384 els | 10.345 ms/op | 4.7282 ms/op | 2.19 |
| shuffle list - 250000 els | 152.94 ms/op | 69.112 ms/op | 2.21 |
| processSlot - 1 slots | 35.400 us/op | 17.592 us/op | 2.01 |
| processSlot - 32 slots | 4.7747 ms/op | 3.6608 ms/op | 1.30 |
| getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 87.488 ms/op | 53.320 ms/op | 1.64 |
| getCommitteeAssignments - req 1 vs - 250000 vc | 3.1282 ms/op | 2.2331 ms/op | 1.40 |
| getCommitteeAssignments - req 100 vs - 250000 vc | 4.5758 ms/op | 3.3350 ms/op | 1.37 |
| getCommitteeAssignments - req 1000 vs - 250000 vc | 6.6471 ms/op | 3.6079 ms/op | 1.84 |
| findModifiedValidators - 10000 modified validators | 865.17 ms/op | 400.04 ms/op | 2.16 |
| findModifiedValidators - 1000 modified validators | 747.57 ms/op | 319.39 ms/op | 2.34 |
| findModifiedValidators - 100 modified validators | 666.89 ms/op | 330.01 ms/op | 2.02 |
| findModifiedValidators - 10 modified validators | 769.66 ms/op | 296.11 ms/op | 2.60 |
| findModifiedValidators - 1 modified validators | 698.02 ms/op | 302.66 ms/op | 2.31 |
| findModifiedValidators - no difference | 724.89 ms/op | 312.43 ms/op | 2.32 |
| compare ViewDUs | 7.2257 s/op | 4.2675 s/op | 1.69 |
| compare each validator Uint8Array | 2.8215 s/op | 1.8654 s/op | 1.51 |
| compare ViewDU to Uint8Array | 2.2923 s/op | 1.3267 s/op | 1.73 |
| migrate state 1000000 validators, 24 modified, 0 new | 1.4410 s/op | 716.96 ms/op | 2.01 |
| migrate state 1000000 validators, 1700 modified, 1000 new | 2.0160 s/op | 1.0339 s/op | 1.95 |
| migrate state 1000000 validators, 3400 modified, 2000 new | 1.7991 s/op | 1.3037 s/op | 1.38 |
| migrate state 1500000 validators, 24 modified, 0 new | 960.96 ms/op | 715.79 ms/op | 1.34 |
| migrate state 1500000 validators, 1700 modified, 1000 new | 1.2661 s/op | 1.0640 s/op | 1.19 |
| migrate state 1500000 validators, 3400 modified, 2000 new | 1.7236 s/op | 1.3849 s/op | 1.24 |
| RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.6700 ns/op | 5.5800 ns/op | 1.02 |
| state getBlockRootAtSlot - 250000 vs - 7PWei | 940.43 ns/op | 952.58 ns/op | 0.99 |
| computeProposers - vc 250000 | 11.328 ms/op | 7.2513 ms/op | 1.56 |
| computeEpochShuffling - vc 250000 | 118.56 ms/op | 71.061 ms/op | 1.67 |
| getNextSyncCommittee - vc 250000 | 184.79 ms/op | 133.71 ms/op | 1.38 |
| computeSigningRoot for AttestationData | 34.264 us/op | 27.532 us/op | 1.24 |
| hash AttestationData serialized data then Buffer.toString(base64) | 2.7089 us/op | 1.3210 us/op | 2.05 |
| toHexString serialized data | 1.2399 us/op | 868.66 ns/op | 1.43 |
| Buffer.toString(base64) | 265.49 ns/op | 213.98 ns/op | 1.24 |
by benchmarkbot/action
Codecov Report
Merging #6445 (e8e091a) into unstable (8959bda) will not change coverage. The diff coverage is
0.00%.
Additional details and impacted files
@@ Coverage Diff @@
## unstable #6445 +/- ##
=========================================
Coverage 61.66% 61.66%
=========================================
Files 554 554
Lines 58078 58078
Branches 1837 1837
=========================================
Hits 35811 35811
Misses 22228 22228
Partials 39 39
:tada: This PR is included in v1.17.0 :tada: