-
-
Notifications
You must be signed in to change notification settings - Fork 358
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
docs: add PR workflow section in contribution guide #7602
base: unstable
Are you sure you want to change the base?
Conversation
|
Benchmark suite | Current: 77264e0 | Previous: 5bc6125 | Ratio |
---|---|---|---|
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 4.9719 ms/op | 1.4855 ms/op | 3.35 |
Full benchmark results
Benchmark suite | Current: 77264e0 | Previous: 5bc6125 | Ratio |
---|---|---|---|
getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.0221 ms/op | 736.57 us/op | 1.39 |
getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 37.872 us/op | 29.427 us/op | 1.29 |
BLS verify - blst | 888.46 us/op | 865.52 us/op | 1.03 |
BLS verifyMultipleSignatures 3 - blst | 1.5814 ms/op | 1.2583 ms/op | 1.26 |
BLS verifyMultipleSignatures 8 - blst | 2.0929 ms/op | 1.9919 ms/op | 1.05 |
BLS verifyMultipleSignatures 32 - blst | 6.6227 ms/op | 4.4245 ms/op | 1.50 |
BLS verifyMultipleSignatures 64 - blst | 10.825 ms/op | 8.2606 ms/op | 1.31 |
BLS verifyMultipleSignatures 128 - blst | 17.547 ms/op | 15.686 ms/op | 1.12 |
BLS deserializing 10000 signatures | 693.56 ms/op | 586.60 ms/op | 1.18 |
BLS deserializing 100000 signatures | 6.9258 s/op | 5.9052 s/op | 1.17 |
BLS verifyMultipleSignatures - same message - 3 - blst | 873.72 us/op | 902.39 us/op | 0.97 |
BLS verifyMultipleSignatures - same message - 8 - blst | 1.0979 ms/op | 1.0542 ms/op | 1.04 |
BLS verifyMultipleSignatures - same message - 32 - blst | 1.8656 ms/op | 1.6147 ms/op | 1.16 |
BLS verifyMultipleSignatures - same message - 64 - blst | 2.6465 ms/op | 2.4147 ms/op | 1.10 |
BLS verifyMultipleSignatures - same message - 128 - blst | 4.4169 ms/op | 3.9618 ms/op | 1.11 |
BLS aggregatePubkeys 32 - blst | 19.358 us/op | 16.791 us/op | 1.15 |
BLS aggregatePubkeys 128 - blst | 69.361 us/op | 59.533 us/op | 1.17 |
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 68.528 ms/op | 35.803 ms/op | 1.91 |
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 64.177 ms/op | 33.876 ms/op | 1.89 |
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 51.290 ms/op | 32.182 ms/op | 1.59 |
getSlashingsAndExits - default max | 71.555 us/op | 45.557 us/op | 1.57 |
getSlashingsAndExits - 2k | 329.40 us/op | 242.84 us/op | 1.36 |
proposeBlockBody type=full, size=empty | 6.8799 ms/op | 6.2248 ms/op | 1.11 |
isKnown best case - 1 super set check | 199.00 ns/op | 405.00 ns/op | 0.49 |
isKnown normal case - 2 super set checks | 194.00 ns/op | 403.00 ns/op | 0.48 |
isKnown worse case - 16 super set checks | 197.00 ns/op | 408.00 ns/op | 0.48 |
InMemoryCheckpointStateCache - add get delete | 2.3610 us/op | 2.3580 us/op | 1.00 |
validate api signedAggregateAndProof - struct | 1.7590 ms/op | 1.4364 ms/op | 1.22 |
validate gossip signedAggregateAndProof - struct | 2.6239 ms/op | 1.4401 ms/op | 1.82 |
batch validate gossip attestation - vc 640000 - chunk 32 | 118.97 us/op | 107.54 us/op | 1.11 |
batch validate gossip attestation - vc 640000 - chunk 64 | 104.35 us/op | 92.826 us/op | 1.12 |
batch validate gossip attestation - vc 640000 - chunk 128 | 96.928 us/op | 83.633 us/op | 1.16 |
batch validate gossip attestation - vc 640000 - chunk 256 | 100.90 us/op | 83.061 us/op | 1.21 |
pickEth1Vote - no votes | 935.33 us/op | 789.39 us/op | 1.18 |
pickEth1Vote - max votes | 6.9893 ms/op | 4.9131 ms/op | 1.42 |
pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 10.251 ms/op | 9.7548 ms/op | 1.05 |
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 17.071 ms/op | 15.189 ms/op | 1.12 |
pickEth1Vote - Eth1Data fastSerialize value x2048 | 439.51 us/op | 309.52 us/op | 1.42 |
pickEth1Vote - Eth1Data fastSerialize tree x2048 | 4.8931 ms/op | 3.7415 ms/op | 1.31 |
bytes32 toHexString | 347.00 ns/op | 508.00 ns/op | 0.68 |
bytes32 Buffer.toString(hex) | 211.00 ns/op | 418.00 ns/op | 0.50 |
bytes32 Buffer.toString(hex) from Uint8Array | 319.00 ns/op | 500.00 ns/op | 0.64 |
bytes32 Buffer.toString(hex) + 0x | 318.00 ns/op | 415.00 ns/op | 0.77 |
Object access 1 prop | 0.10900 ns/op | 0.30200 ns/op | 0.36 |
Map access 1 prop | 0.12000 ns/op | 0.31200 ns/op | 0.38 |
Object get x1000 | 5.6920 ns/op | 5.0690 ns/op | 1.12 |
Map get x1000 | 6.0620 ns/op | 5.7670 ns/op | 1.05 |
Object set x1000 | 28.327 ns/op | 21.574 ns/op | 1.31 |
Map set x1000 | 19.254 ns/op | 16.212 ns/op | 1.19 |
Return object 10000 times | 0.28540 ns/op | 0.29270 ns/op | 0.98 |
Throw Error 10000 times | 4.3121 us/op | 3.4346 us/op | 1.26 |
toHex | 137.21 ns/op | 102.80 ns/op | 1.33 |
Buffer.from | 121.82 ns/op | 95.395 ns/op | 1.28 |
shared Buffer | 83.574 ns/op | 65.921 ns/op | 1.27 |
fastMsgIdFn sha256 / 200 bytes | 2.1530 us/op | 1.9310 us/op | 1.11 |
fastMsgIdFn h32 xxhash / 200 bytes | 201.00 ns/op | 385.00 ns/op | 0.52 |
fastMsgIdFn h64 xxhash / 200 bytes | 261.00 ns/op | 444.00 ns/op | 0.59 |
fastMsgIdFn sha256 / 1000 bytes | 6.7440 us/op | 5.7020 us/op | 1.18 |
fastMsgIdFn h32 xxhash / 1000 bytes | 332.00 ns/op | 504.00 ns/op | 0.66 |
fastMsgIdFn h64 xxhash / 1000 bytes | 335.00 ns/op | 514.00 ns/op | 0.65 |
fastMsgIdFn sha256 / 10000 bytes | 64.078 us/op | 49.325 us/op | 1.30 |
fastMsgIdFn h32 xxhash / 10000 bytes | 1.7110 us/op | 1.8630 us/op | 0.92 |
fastMsgIdFn h64 xxhash / 10000 bytes | 1.1600 us/op | 1.3080 us/op | 0.89 |
send data - 1000 256B messages | 12.593 ms/op | 9.8024 ms/op | 1.28 |
send data - 1000 512B messages | 15.782 ms/op | 13.133 ms/op | 1.20 |
send data - 1000 1024B messages | 23.793 ms/op | 20.860 ms/op | 1.14 |
send data - 1000 1200B messages | 21.162 ms/op | 15.044 ms/op | 1.41 |
send data - 1000 2048B messages | 21.431 ms/op | 15.463 ms/op | 1.39 |
send data - 1000 4096B messages | 25.244 ms/op | 17.396 ms/op | 1.45 |
send data - 1000 16384B messages | 67.192 ms/op | 44.404 ms/op | 1.51 |
send data - 1000 65536B messages | 203.03 ms/op | 253.32 ms/op | 0.80 |
enrSubnets - fastDeserialize 64 bits | 868.00 ns/op | 952.00 ns/op | 0.91 |
enrSubnets - ssz BitVector 64 bits | 319.00 ns/op | 495.00 ns/op | 0.64 |
enrSubnets - fastDeserialize 4 bits | 120.00 ns/op | 328.00 ns/op | 0.37 |
enrSubnets - ssz BitVector 4 bits | 312.00 ns/op | 503.00 ns/op | 0.62 |
prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 111.64 us/op | 97.060 us/op | 1.15 |
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 135.83 us/op | 117.25 us/op | 1.16 |
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 193.70 us/op | 169.91 us/op | 1.14 |
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 357.13 us/op | 332.89 us/op | 1.07 |
prioritizePeers score 0:0 att 64-1 sync 4-1 | 435.90 us/op | 390.40 us/op | 1.12 |
array of 16000 items push then shift | 1.5384 us/op | 1.2882 us/op | 1.19 |
LinkedList of 16000 items push then shift | 6.6260 ns/op | 6.2390 ns/op | 1.06 |
array of 16000 items push then pop | 73.395 ns/op | 60.568 ns/op | 1.21 |
LinkedList of 16000 items push then pop | 6.7290 ns/op | 6.1150 ns/op | 1.10 |
array of 24000 items push then shift | 2.2713 us/op | 1.8879 us/op | 1.20 |
LinkedList of 24000 items push then shift | 8.4450 ns/op | 6.2390 ns/op | 1.35 |
array of 24000 items push then pop | 95.302 ns/op | 84.973 ns/op | 1.12 |
LinkedList of 24000 items push then pop | 6.5000 ns/op | 6.1140 ns/op | 1.06 |
intersect bitArray bitLen 8 | 6.4350 ns/op | 5.4360 ns/op | 1.18 |
intersect array and set length 8 | 37.058 ns/op | 32.614 ns/op | 1.14 |
intersect bitArray bitLen 128 | 29.201 ns/op | 26.632 ns/op | 1.10 |
intersect array and set length 128 | 606.65 ns/op | 543.88 ns/op | 1.12 |
bitArray.getTrueBitIndexes() bitLen 128 | 988.00 ns/op | 1.1320 us/op | 0.87 |
bitArray.getTrueBitIndexes() bitLen 248 | 1.7510 us/op | 1.7890 us/op | 0.98 |
bitArray.getTrueBitIndexes() bitLen 512 | 3.5560 us/op | 3.2520 us/op | 1.09 |
Buffer.concat 32 items | 708.00 ns/op | 773.00 ns/op | 0.92 |
Uint8Array.set 32 items | 1.9410 us/op | 1.0410 us/op | 1.86 |
Buffer.copy | 2.8320 us/op | 2.0330 us/op | 1.39 |
Uint8Array.set - with subarray | 2.7220 us/op | 1.6710 us/op | 1.63 |
Uint8Array.set - without subarray | 1.1580 us/op | 1.0070 us/op | 1.15 |
getUint32 - dataview | 185.00 ns/op | 386.00 ns/op | 0.48 |
getUint32 - manual | 112.00 ns/op | 321.00 ns/op | 0.35 |
Set add up to 64 items then delete first | 2.0731 us/op | 1.7644 us/op | 1.17 |
OrderedSet add up to 64 items then delete first | 3.0608 us/op | 2.5214 us/op | 1.21 |
Set add up to 64 items then delete last | 2.3544 us/op | 1.9199 us/op | 1.23 |
OrderedSet add up to 64 items then delete last | 3.4621 us/op | 3.0533 us/op | 1.13 |
Set add up to 64 items then delete middle | 2.3798 us/op | 2.0423 us/op | 1.17 |
OrderedSet add up to 64 items then delete middle | 4.8823 us/op | 4.5418 us/op | 1.07 |
Set add up to 128 items then delete first | 4.7474 us/op | 4.0192 us/op | 1.18 |
OrderedSet add up to 128 items then delete first | 7.5169 us/op | 6.3009 us/op | 1.19 |
Set add up to 128 items then delete last | 4.7763 us/op | 3.8899 us/op | 1.23 |
OrderedSet add up to 128 items then delete last | 6.9535 us/op | 5.9226 us/op | 1.17 |
Set add up to 128 items then delete middle | 4.6028 us/op | 3.8880 us/op | 1.18 |
OrderedSet add up to 128 items then delete middle | 13.026 us/op | 11.959 us/op | 1.09 |
Set add up to 256 items then delete first | 9.9704 us/op | 7.8640 us/op | 1.27 |
OrderedSet add up to 256 items then delete first | 15.369 us/op | 12.347 us/op | 1.24 |
Set add up to 256 items then delete last | 9.1838 us/op | 7.6274 us/op | 1.20 |
OrderedSet add up to 256 items then delete last | 14.157 us/op | 11.630 us/op | 1.22 |
Set add up to 256 items then delete middle | 9.0800 us/op | 7.5998 us/op | 1.19 |
OrderedSet add up to 256 items then delete middle | 39.044 us/op | 34.299 us/op | 1.14 |
transfer serialized Status (84 B) | 2.1950 us/op | 1.9860 us/op | 1.11 |
copy serialized Status (84 B) | 1.2240 us/op | 1.2300 us/op | 1.00 |
transfer serialized SignedVoluntaryExit (112 B) | 2.2720 us/op | 1.9970 us/op | 1.14 |
copy serialized SignedVoluntaryExit (112 B) | 1.2210 us/op | 1.2620 us/op | 0.97 |
transfer serialized ProposerSlashing (416 B) | 2.4180 us/op | 2.0360 us/op | 1.19 |
copy serialized ProposerSlashing (416 B) | 2.2660 us/op | 1.4980 us/op | 1.51 |
transfer serialized Attestation (485 B) | 2.4420 us/op | 2.0140 us/op | 1.21 |
copy serialized Attestation (485 B) | 1.3030 us/op | 1.3600 us/op | 0.96 |
transfer serialized AttesterSlashing (33232 B) | 2.6870 us/op | 2.0740 us/op | 1.30 |
copy serialized AttesterSlashing (33232 B) | 4.0930 us/op | 3.1620 us/op | 1.29 |
transfer serialized Small SignedBeaconBlock (128000 B) | 3.4200 us/op | 2.5460 us/op | 1.34 |
copy serialized Small SignedBeaconBlock (128000 B) | 9.6080 us/op | 5.8010 us/op | 1.66 |
transfer serialized Avg SignedBeaconBlock (200000 B) | 3.6130 us/op | 2.3540 us/op | 1.53 |
copy serialized Avg SignedBeaconBlock (200000 B) | 13.359 us/op | 8.2620 us/op | 1.62 |
transfer serialized BlobsSidecar (524380 B) | 3.5290 us/op | 3.0250 us/op | 1.17 |
copy serialized BlobsSidecar (524380 B) | 95.277 us/op | 59.729 us/op | 1.60 |
transfer serialized Big SignedBeaconBlock (1000000 B) | 3.6880 us/op | 3.5360 us/op | 1.04 |
copy serialized Big SignedBeaconBlock (1000000 B) | 114.76 us/op | 108.81 us/op | 1.05 |
pass gossip attestations to forkchoice per slot | 2.7090 ms/op | 2.3284 ms/op | 1.16 |
forkChoice updateHead vc 100000 bc 64 eq 0 | 444.08 us/op | 369.20 us/op | 1.20 |
forkChoice updateHead vc 600000 bc 64 eq 0 | 2.7050 ms/op | 2.0553 ms/op | 1.32 |
forkChoice updateHead vc 1000000 bc 64 eq 0 | 5.1945 ms/op | 3.7589 ms/op | 1.38 |
forkChoice updateHead vc 600000 bc 320 eq 0 | 2.7002 ms/op | 2.0679 ms/op | 1.31 |
forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.7560 ms/op | 2.2804 ms/op | 1.21 |
forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.2210 ms/op | 2.2987 ms/op | 1.40 |
forkChoice updateHead vc 600000 bc 64 eq 1000 | 10.040 ms/op | 9.5019 ms/op | 1.06 |
forkChoice updateHead vc 600000 bc 64 eq 10000 | 10.003 ms/op | 8.9692 ms/op | 1.12 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 13.451 ms/op | 10.731 ms/op | 1.25 |
computeDeltas 500000 validators 300 proto nodes | 3.7797 ms/op | 3.0892 ms/op | 1.22 |
computeDeltas 500000 validators 1200 proto nodes | 3.7863 ms/op | 3.0433 ms/op | 1.24 |
computeDeltas 500000 validators 7200 proto nodes | 3.8399 ms/op | 3.0224 ms/op | 1.27 |
computeDeltas 750000 validators 300 proto nodes | 5.7669 ms/op | 4.4647 ms/op | 1.29 |
computeDeltas 750000 validators 1200 proto nodes | 5.7861 ms/op | 4.5173 ms/op | 1.28 |
computeDeltas 750000 validators 7200 proto nodes | 5.7942 ms/op | 4.5842 ms/op | 1.26 |
computeDeltas 1400000 validators 300 proto nodes | 10.989 ms/op | 8.4893 ms/op | 1.29 |
computeDeltas 1400000 validators 1200 proto nodes | 10.942 ms/op | 8.5508 ms/op | 1.28 |
computeDeltas 1400000 validators 7200 proto nodes | 11.046 ms/op | 8.5448 ms/op | 1.29 |
computeDeltas 2100000 validators 300 proto nodes | 16.740 ms/op | 12.724 ms/op | 1.32 |
computeDeltas 2100000 validators 1200 proto nodes | 16.854 ms/op | 12.843 ms/op | 1.31 |
computeDeltas 2100000 validators 7200 proto nodes | 16.940 ms/op | 12.676 ms/op | 1.34 |
altair processAttestation - 250000 vs - 7PWei normalcase | 2.5010 ms/op | 1.6542 ms/op | 1.51 |
altair processAttestation - 250000 vs - 7PWei worstcase | 3.7986 ms/op | 2.5247 ms/op | 1.50 |
altair processAttestation - setStatus - 1/6 committees join | 142.84 us/op | 93.524 us/op | 1.53 |
altair processAttestation - setStatus - 1/3 committees join | 284.69 us/op | 190.48 us/op | 1.49 |
altair processAttestation - setStatus - 1/2 committees join | 347.70 us/op | 258.69 us/op | 1.34 |
altair processAttestation - setStatus - 2/3 committees join | 478.64 us/op | 354.50 us/op | 1.35 |
altair processAttestation - setStatus - 4/5 committees join | 645.09 us/op | 486.86 us/op | 1.33 |
altair processAttestation - setStatus - 100% committees join | 731.15 us/op | 559.53 us/op | 1.31 |
altair processBlock - 250000 vs - 7PWei normalcase | 11.382 ms/op | 6.1888 ms/op | 1.84 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 56.816 ms/op | 49.416 ms/op | 1.15 |
altair processBlock - 250000 vs - 7PWei worstcase | 35.946 ms/op | 33.815 ms/op | 1.06 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 101.87 ms/op | 87.524 ms/op | 1.16 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 2.3145 ms/op | 1.9321 ms/op | 1.20 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 27.469 ms/op | 20.740 ms/op | 1.32 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 346.05 us/op | 278.41 us/op | 1.24 |
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 7.0340 us/op | 4.2060 us/op | 1.67 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 46.105 us/op | 42.123 us/op | 1.09 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 11.652 us/op | 8.0020 us/op | 1.46 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 6.8540 us/op | 4.3450 us/op | 1.58 |
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 176.40 us/op | 110.11 us/op | 1.60 |
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.2771 ms/op | 1.2706 ms/op | 1.01 |
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.6975 ms/op | 989.93 us/op | 1.71 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.7929 ms/op | 1.0907 ms/op | 1.64 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 4.3687 ms/op | 2.7174 ms/op | 1.61 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.8926 ms/op | 1.1304 ms/op | 1.67 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 4.4730 ms/op | 3.0264 ms/op | 1.48 |
Tree 40 250000 create | 710.60 ms/op | 333.45 ms/op | 2.13 |
Tree 40 250000 get(125000) | 150.61 ns/op | 103.41 ns/op | 1.46 |
Tree 40 250000 set(125000) | 2.5382 us/op | 1.0848 us/op | 2.34 |
Tree 40 250000 toArray() | 22.842 ms/op | 9.5096 ms/op | 2.40 |
Tree 40 250000 iterate all - toArray() + loop | 24.186 ms/op | 9.6329 ms/op | 2.51 |
Tree 40 250000 iterate all - get(i) | 65.293 ms/op | 39.311 ms/op | 1.66 |
Array 250000 create | 3.4675 ms/op | 2.2955 ms/op | 1.51 |
Array 250000 clone - spread | 1.9673 ms/op | 633.68 us/op | 3.10 |
Array 250000 get(125000) | 0.42000 ns/op | 0.58200 ns/op | 0.72 |
Array 250000 set(125000) | 0.44300 ns/op | 0.59600 ns/op | 0.74 |
Array 250000 iterate all - loop | 86.413 us/op | 77.383 us/op | 1.12 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 45.632 ms/op | 38.984 ms/op | 1.17 |
Array.fill - length 1000000 | 4.7524 ms/op | 2.4070 ms/op | 1.97 |
Array push - length 1000000 | 20.872 ms/op | 9.1813 ms/op | 2.27 |
Array.get | 0.29228 ns/op | 0.24776 ns/op | 1.18 |
Uint8Array.get | 0.46501 ns/op | 0.31985 ns/op | 1.45 |
phase0 beforeProcessEpoch - 250000 vs - 7PWei | 22.641 ms/op | 15.382 ms/op | 1.47 |
altair processEpoch - mainnet_e81889 | 365.35 ms/op | 274.51 ms/op | 1.33 |
mainnet_e81889 - altair beforeProcessEpoch | 23.736 ms/op | 19.322 ms/op | 1.23 |
mainnet_e81889 - altair processJustificationAndFinalization | 7.1150 us/op | 4.5140 us/op | 1.58 |
mainnet_e81889 - altair processInactivityUpdates | 7.0197 ms/op | 3.9759 ms/op | 1.77 |
mainnet_e81889 - altair processRewardsAndPenalties | 55.543 ms/op | 53.270 ms/op | 1.04 |
mainnet_e81889 - altair processRegistryUpdates | 735.00 ns/op | 854.00 ns/op | 0.86 |
mainnet_e81889 - altair processSlashings | 210.00 ns/op | 411.00 ns/op | 0.51 |
mainnet_e81889 - altair processEth1DataReset | 203.00 ns/op | 397.00 ns/op | 0.51 |
mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.3407 ms/op | 917.73 us/op | 1.46 |
mainnet_e81889 - altair processSlashingsReset | 1.1170 us/op | 1.2950 us/op | 0.86 |
mainnet_e81889 - altair processRandaoMixesReset | 1.3980 us/op | 1.1950 us/op | 1.17 |
mainnet_e81889 - altair processHistoricalRootsUpdate | 199.00 ns/op | 387.00 ns/op | 0.51 |
mainnet_e81889 - altair processParticipationFlagUpdates | 586.00 ns/op | 685.00 ns/op | 0.86 |
mainnet_e81889 - altair processSyncCommitteeUpdates | 149.00 ns/op | 351.00 ns/op | 0.42 |
mainnet_e81889 - altair afterProcessEpoch | 47.233 ms/op | 38.565 ms/op | 1.22 |
capella processEpoch - mainnet_e217614 | 1.2305 s/op | 955.86 ms/op | 1.29 |
mainnet_e217614 - capella beforeProcessEpoch | 98.090 ms/op | 66.327 ms/op | 1.48 |
mainnet_e217614 - capella processJustificationAndFinalization | 6.6870 us/op | 4.5910 us/op | 1.46 |
mainnet_e217614 - capella processInactivityUpdates | 25.821 ms/op | 13.367 ms/op | 1.93 |
mainnet_e217614 - capella processRewardsAndPenalties | 269.39 ms/op | 207.79 ms/op | 1.30 |
mainnet_e217614 - capella processRegistryUpdates | 8.0020 us/op | 5.1540 us/op | 1.55 |
mainnet_e217614 - capella processSlashings | 192.00 ns/op | 392.00 ns/op | 0.49 |
mainnet_e217614 - capella processEth1DataReset | 189.00 ns/op | 385.00 ns/op | 0.49 |
mainnet_e217614 - capella processEffectiveBalanceUpdates | 18.524 ms/op | 9.6782 ms/op | 1.91 |
mainnet_e217614 - capella processSlashingsReset | 1.2010 us/op | 1.1620 us/op | 1.03 |
mainnet_e217614 - capella processRandaoMixesReset | 1.5900 us/op | 1.2860 us/op | 1.24 |
mainnet_e217614 - capella processHistoricalRootsUpdate | 234.00 ns/op | 397.00 ns/op | 0.59 |
mainnet_e217614 - capella processParticipationFlagUpdates | 737.00 ns/op | 688.00 ns/op | 1.07 |
mainnet_e217614 - capella afterProcessEpoch | 127.42 ms/op | 108.54 ms/op | 1.17 |
phase0 processEpoch - mainnet_e58758 | 387.05 ms/op | 277.37 ms/op | 1.40 |
mainnet_e58758 - phase0 beforeProcessEpoch | 119.02 ms/op | 70.390 ms/op | 1.69 |
mainnet_e58758 - phase0 processJustificationAndFinalization | 7.7490 us/op | 5.5360 us/op | 1.40 |
mainnet_e58758 - phase0 processRewardsAndPenalties | 49.051 ms/op | 44.329 ms/op | 1.11 |
mainnet_e58758 - phase0 processRegistryUpdates | 3.9630 us/op | 2.8800 us/op | 1.38 |
mainnet_e58758 - phase0 processSlashings | 213.00 ns/op | 393.00 ns/op | 0.54 |
mainnet_e58758 - phase0 processEth1DataReset | 212.00 ns/op | 403.00 ns/op | 0.53 |
mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.1481 ms/op | 841.38 us/op | 1.36 |
mainnet_e58758 - phase0 processSlashingsReset | 1.4030 us/op | 1.0420 us/op | 1.35 |
mainnet_e58758 - phase0 processRandaoMixesReset | 1.5700 us/op | 1.3080 us/op | 1.20 |
mainnet_e58758 - phase0 processHistoricalRootsUpdate | 199.00 ns/op | 390.00 ns/op | 0.51 |
mainnet_e58758 - phase0 processParticipationRecordUpdates | 1.0230 us/op | 1.1830 us/op | 0.86 |
mainnet_e58758 - phase0 afterProcessEpoch | 39.529 ms/op | 33.417 ms/op | 1.18 |
phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.7640 ms/op | 914.37 us/op | 1.93 |
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 4.9719 ms/op | 1.4855 ms/op | 3.35 |
altair processInactivityUpdates - 250000 normalcase | 26.302 ms/op | 18.601 ms/op | 1.41 |
altair processInactivityUpdates - 250000 worstcase | 24.827 ms/op | 18.647 ms/op | 1.33 |
phase0 processRegistryUpdates - 250000 normalcase | 16.707 us/op | 4.6140 us/op | 3.62 |
phase0 processRegistryUpdates - 250000 badcase_full_deposits | 372.16 us/op | 293.07 us/op | 1.27 |
phase0 processRegistryUpdates - 250000 worstcase 0.5 | 158.61 ms/op | 104.52 ms/op | 1.52 |
altair processRewardsAndPenalties - 250000 normalcase | 48.049 ms/op | 45.684 ms/op | 1.05 |
altair processRewardsAndPenalties - 250000 worstcase | 42.938 ms/op | 33.512 ms/op | 1.28 |
phase0 getAttestationDeltas - 250000 normalcase | 8.6807 ms/op | 4.9304 ms/op | 1.76 |
phase0 getAttestationDeltas - 250000 worstcase | 7.2402 ms/op | 4.9801 ms/op | 1.45 |
phase0 processSlashings - 250000 worstcase | 133.69 us/op | 84.759 us/op | 1.58 |
altair processSyncCommitteeUpdates - 250000 | 14.561 ms/op | 9.2816 ms/op | 1.57 |
BeaconState.hashTreeRoot - No change | 341.00 ns/op | 451.00 ns/op | 0.76 |
BeaconState.hashTreeRoot - 1 full validator | 142.19 us/op | 85.233 us/op | 1.67 |
BeaconState.hashTreeRoot - 32 full validator | 1.2063 ms/op | 922.42 us/op | 1.31 |
BeaconState.hashTreeRoot - 512 full validator | 14.785 ms/op | 11.385 ms/op | 1.30 |
BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 140.25 us/op | 104.11 us/op | 1.35 |
BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 2.0169 ms/op | 1.6274 ms/op | 1.24 |
BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 34.430 ms/op | 22.471 ms/op | 1.53 |
BeaconState.hashTreeRoot - 1 balances | 90.823 us/op | 75.677 us/op | 1.20 |
BeaconState.hashTreeRoot - 32 balances | 867.49 us/op | 747.77 us/op | 1.16 |
BeaconState.hashTreeRoot - 512 balances | 9.5142 ms/op | 6.1200 ms/op | 1.55 |
BeaconState.hashTreeRoot - 250000 balances | 169.13 ms/op | 171.84 ms/op | 0.98 |
aggregationBits - 2048 els - zipIndexesInBitList | 23.732 us/op | 17.354 us/op | 1.37 |
byteArrayEquals 32 | 55.452 ns/op | 46.871 ns/op | 1.18 |
Buffer.compare 32 | 18.043 ns/op | 16.056 ns/op | 1.12 |
byteArrayEquals 1024 | 1.6699 us/op | 1.2845 us/op | 1.30 |
Buffer.compare 1024 | 26.519 ns/op | 24.838 ns/op | 1.07 |
byteArrayEquals 16384 | 26.229 us/op | 20.301 us/op | 1.29 |
Buffer.compare 16384 | 185.69 ns/op | 168.31 ns/op | 1.10 |
byteArrayEquals 123687377 | 196.55 ms/op | 152.93 ms/op | 1.29 |
Buffer.compare 123687377 | 6.6719 ms/op | 3.6628 ms/op | 1.82 |
byteArrayEquals 32 - diff last byte | 54.620 ns/op | 47.428 ns/op | 1.15 |
Buffer.compare 32 - diff last byte | 17.844 ns/op | 16.372 ns/op | 1.09 |
byteArrayEquals 1024 - diff last byte | 1.6572 us/op | 1.2727 us/op | 1.30 |
Buffer.compare 1024 - diff last byte | 27.377 ns/op | 23.613 ns/op | 1.16 |
byteArrayEquals 16384 - diff last byte | 26.408 us/op | 20.158 us/op | 1.31 |
Buffer.compare 16384 - diff last byte | 195.62 ns/op | 175.81 ns/op | 1.11 |
byteArrayEquals 123687377 - diff last byte | 194.53 ms/op | 152.43 ms/op | 1.28 |
Buffer.compare 123687377 - diff last byte | 7.4027 ms/op | 3.7149 ms/op | 1.99 |
byteArrayEquals 32 - random bytes | 5.1720 ns/op | 4.9420 ns/op | 1.05 |
Buffer.compare 32 - random bytes | 17.423 ns/op | 16.492 ns/op | 1.06 |
byteArrayEquals 1024 - random bytes | 5.2080 ns/op | 4.9190 ns/op | 1.06 |
Buffer.compare 1024 - random bytes | 17.415 ns/op | 16.204 ns/op | 1.07 |
byteArrayEquals 16384 - random bytes | 5.1870 ns/op | 5.6930 ns/op | 0.91 |
Buffer.compare 16384 - random bytes | 17.506 ns/op | 16.595 ns/op | 1.05 |
byteArrayEquals 123687377 - random bytes | 8.3900 ns/op | 7.8300 ns/op | 1.07 |
Buffer.compare 123687377 - random bytes | 28.610 ns/op | 19.690 ns/op | 1.45 |
regular array get 100000 times | 44.830 us/op | 30.821 us/op | 1.45 |
wrappedArray get 100000 times | 33.323 us/op | 30.787 us/op | 1.08 |
arrayWithProxy get 100000 times | 13.892 ms/op | 10.394 ms/op | 1.34 |
ssz.Root.equals | 46.988 ns/op | 44.053 ns/op | 1.07 |
byteArrayEquals | 46.088 ns/op | 43.219 ns/op | 1.07 |
Buffer.compare | 10.598 ns/op | 9.7300 ns/op | 1.09 |
processSlot - 1 slots | 10.774 us/op | 9.2760 us/op | 1.16 |
processSlot - 32 slots | 2.0564 ms/op | 2.8121 ms/op | 0.73 |
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 58.816 ms/op | 57.907 ms/op | 1.02 |
getCommitteeAssignments - req 1 vs - 250000 vc | 2.1577 ms/op | 1.6865 ms/op | 1.28 |
getCommitteeAssignments - req 100 vs - 250000 vc | 3.9227 ms/op | 3.3151 ms/op | 1.18 |
getCommitteeAssignments - req 1000 vs - 250000 vc | 4.2088 ms/op | 3.5277 ms/op | 1.19 |
findModifiedValidators - 10000 modified validators | 773.79 ms/op | 749.04 ms/op | 1.03 |
findModifiedValidators - 1000 modified validators | 765.55 ms/op | 655.54 ms/op | 1.17 |
findModifiedValidators - 100 modified validators | 216.81 ms/op | 219.98 ms/op | 0.99 |
findModifiedValidators - 10 modified validators | 154.75 ms/op | 126.47 ms/op | 1.22 |
findModifiedValidators - 1 modified validators | 159.85 ms/op | 153.80 ms/op | 1.04 |
findModifiedValidators - no difference | 169.95 ms/op | 143.20 ms/op | 1.19 |
compare ViewDUs | 6.6097 s/op | 6.0363 s/op | 1.09 |
compare each validator Uint8Array | 1.3222 s/op | 1.4559 s/op | 0.91 |
compare ViewDU to Uint8Array | 1.3988 s/op | 731.21 ms/op | 1.91 |
migrate state 1000000 validators, 24 modified, 0 new | 949.49 ms/op | 831.53 ms/op | 1.14 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.1987 s/op | 1.1246 s/op | 1.07 |
migrate state 1000000 validators, 3400 modified, 2000 new | 1.3747 s/op | 1.3277 s/op | 1.04 |
migrate state 1500000 validators, 24 modified, 0 new | 956.84 ms/op | 789.92 ms/op | 1.21 |
migrate state 1500000 validators, 1700 modified, 1000 new | 1.1758 s/op | 1.1156 s/op | 1.05 |
migrate state 1500000 validators, 3400 modified, 2000 new | 1.4419 s/op | 1.3264 s/op | 1.09 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.2600 ns/op | 5.8200 ns/op | 0.73 |
state getBlockRootAtSlot - 250000 vs - 7PWei | 489.10 ns/op | 439.10 ns/op | 1.11 |
naive computeProposerIndex 100000 validators | 54.543 ms/op | 42.288 ms/op | 1.29 |
computeProposerIndex 100000 validators | 1.5319 ms/op | 1.2322 ms/op | 1.24 |
naiveGetNextSyncCommitteeIndices 1000 validators | 8.3477 s/op | 6.1786 s/op | 1.35 |
getNextSyncCommitteeIndices 1000 validators | 112.28 ms/op | 93.394 ms/op | 1.20 |
naiveGetNextSyncCommitteeIndices 10000 validators | 8.3376 s/op | 6.1590 s/op | 1.35 |
getNextSyncCommitteeIndices 10000 validators | 114.22 ms/op | 86.751 ms/op | 1.32 |
naiveGetNextSyncCommitteeIndices 100000 validators | 8.6804 s/op | 6.2014 s/op | 1.40 |
getNextSyncCommitteeIndices 100000 validators | 119.24 ms/op | 91.877 ms/op | 1.30 |
naive computeShuffledIndex 100000 validators | 27.298 s/op | 20.945 s/op | 1.30 |
cached computeShuffledIndex 100000 validators | 551.56 ms/op | 464.75 ms/op | 1.19 |
naive computeShuffledIndex 2000000 validators | 516.99 s/op | 394.87 s/op | 1.31 |
cached computeShuffledIndex 2000000 validators | 42.073 s/op | 14.976 s/op | 2.81 |
computeProposers - vc 250000 | 607.60 us/op | 524.86 us/op | 1.16 |
computeEpochShuffling - vc 250000 | 42.967 ms/op | 37.630 ms/op | 1.14 |
getNextSyncCommittee - vc 250000 | 11.083 ms/op | 9.1883 ms/op | 1.21 |
computeSigningRoot for AttestationData | 23.707 us/op | 19.737 us/op | 1.20 |
hash AttestationData serialized data then Buffer.toString(base64) | 1.6257 us/op | 1.1719 us/op | 1.39 |
toHexString serialized data | 1.2378 us/op | 962.83 ns/op | 1.29 |
Buffer.toString(base64) | 178.32 ns/op | 110.36 ns/op | 1.62 |
nodejs block root to RootHex using toHex | 142.06 ns/op | 112.36 ns/op | 1.26 |
nodejs block root to RootHex using toRootHex | 88.644 ns/op | 74.578 ns/op | 1.19 |
browser block root to RootHex using the deprecated toHexString | 280.80 ns/op | 200.13 ns/op | 1.40 |
browser block root to RootHex using toHex | 181.08 ns/op | 154.77 ns/op | 1.17 |
browser block root to RootHex using toRootHex | 166.77 ns/op | 136.90 ns/op | 1.22 |
by benchmarkbot/action
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Few thoughts for the team. What do you think?
Co-authored-by: Matthew Keil <[email protected]>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## unstable #7602 +/- ##
=========================================
Coverage 50.22% 50.23%
=========================================
Files 604 604
Lines 40466 40454 -12
Branches 2228 2229 +1
=========================================
- Hits 20324 20321 -3
+ Misses 20102 20091 -11
- Partials 40 42 +2 🚀 New features to boost your workflow:
|
CONTRIBUTING.md
Outdated
|
||
- Clearly explain the rationale and motivation behind the change in the PR description. | ||
- Provide relevant context, including: | ||
- Problem the PR is solving. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be indented further as it's sub bullet point of line above
CONTRIBUTING.md
Outdated
- Broad overview of how data will flow and integrate with the surrounding sub-systems | ||
- Rough discussion of potential performance (cpu and memory) implications | ||
- Share the document with the team and gather feedback before implementation. | ||
- Create a feature branch to showcase the entire implementation. The idea will be to get this branch deployed on a feature group to test and tune the code on a devnet. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why "on a devnet"? if this change modifies code that is already live on mainnet / public testnet we should get data from those networks and test it there
- Link the discussion in the PR description once consensus is reached. | ||
- If changes affect multiple packages or require coordination with ongoing development, summarize any key decisions from the discussion in the PR description. | ||
|
||
### 3. Large Feature or Multi-PR Implementation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what's missing for this kind of large feature changes is that ideally it should be behind a feature flag (similar to how n-historical-states was rolled out), but of course this is not always possible
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes every feature should be rolled out under feature flags (hidden or public), but we are not yet there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
but we are not yet there.
but Tuyen managed to do that, so we should make sure this is desired if possible and should be documented as such
Co-authored-by: Nico Flaig <[email protected]>
.wordlist.txt
Outdated
@@ -160,6 +160,7 @@ feeRecipient | |||
flamegraph | |||
flamegraphs | |||
floodsub | |||
focussed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
focused typically has 1 s, so this should be removed.
CONTRIBUTING.md
Outdated
- Broad overview of how data will flow and integrate with the surrounding sub-systems | ||
- Rough discussion of potential performance (cpu and memory) implications | ||
- Share the document with the team and gather feedback before implementation. | ||
- Create a feature branch to showcase the entire implementation. The idea will be to get this branch deployed on a feature group to test and tune the code on a devnet. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should be noted, an mvp implementation will hopefully also catch corner cases not anticipated in brainstorming.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added to the list.
CONTRIBUTING.md
Outdated
If the PR introduces large-scale changes, affecting multiple areas of the codebase or requiring step-by-step integration: | ||
|
||
- Document the feature first before opening any PR. | ||
- Open a Github issue with a detailed technical proposal explaining the feature. This ideally will include some details like: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't fully understand why this wouldn't get a Github discussion (Like "2. PR with Major Refactoring) as well instead of an issue? These large features will typically have the most amount of back and forth.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to the Github Discussion
CONTRIBUTING.md
Outdated
|
||
If the PR involves significant code refactoring, structural changes, or fundamental modifications where team input is needed: | ||
|
||
- Start a GitHub Discussion or Discord thread before writing code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest that we do Discord for brainstorm back and forth and use Github Discussions to persist the outcome of what was discussed on the Discord thread.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought it's fine to have both options (as per #7602 (comment)) but personally lean more towards discord for those kind of early (and potentially chaotic / back and forth) discussions
Motivation
Document the PR workflow based on the last team discussion.
Description
Steps to test or reproduce