-
-
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: 7afe8e0 | Previous: 706f45e | Ratio |
---|---|---|---|
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 7.2589 ms/op | 1.9147 ms/op | 3.79 |
Full benchmark results
Benchmark suite | Current: 7afe8e0 | Previous: 706f45e | Ratio |
---|---|---|---|
getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.0508 ms/op | 1.0272 ms/op | 1.02 |
getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 38.202 us/op | 35.144 us/op | 1.09 |
BLS verify - blst | 1.0086 ms/op | 970.24 us/op | 1.04 |
BLS verifyMultipleSignatures 3 - blst | 1.6387 ms/op | 1.5939 ms/op | 1.03 |
BLS verifyMultipleSignatures 8 - blst | 2.0887 ms/op | 2.0757 ms/op | 1.01 |
BLS verifyMultipleSignatures 32 - blst | 7.5779 ms/op | 6.6586 ms/op | 1.14 |
BLS verifyMultipleSignatures 64 - blst | 11.657 ms/op | 10.733 ms/op | 1.09 |
BLS verifyMultipleSignatures 128 - blst | 24.120 ms/op | 17.014 ms/op | 1.42 |
BLS deserializing 10000 signatures | 777.28 ms/op | 681.11 ms/op | 1.14 |
BLS deserializing 100000 signatures | 7.4285 s/op | 6.9431 s/op | 1.07 |
BLS verifyMultipleSignatures - same message - 3 - blst | 1.0827 ms/op | 988.39 us/op | 1.10 |
BLS verifyMultipleSignatures - same message - 8 - blst | 1.0593 ms/op | 1.1579 ms/op | 0.91 |
BLS verifyMultipleSignatures - same message - 32 - blst | 1.8462 ms/op | 1.9271 ms/op | 0.96 |
BLS verifyMultipleSignatures - same message - 64 - blst | 2.7959 ms/op | 2.6791 ms/op | 1.04 |
BLS verifyMultipleSignatures - same message - 128 - blst | 4.6163 ms/op | 4.4060 ms/op | 1.05 |
BLS aggregatePubkeys 32 - blst | 19.998 us/op | 19.747 us/op | 1.01 |
BLS aggregatePubkeys 128 - blst | 72.314 us/op | 70.203 us/op | 1.03 |
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 57.632 ms/op | 58.791 ms/op | 0.98 |
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 60.923 ms/op | 65.269 ms/op | 0.93 |
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 39.731 ms/op | 44.403 ms/op | 0.89 |
getSlashingsAndExits - default max | 76.758 us/op | 74.926 us/op | 1.02 |
getSlashingsAndExits - 2k | 323.21 us/op | 347.61 us/op | 0.93 |
proposeBlockBody type=full, size=empty | 5.3950 ms/op | 5.6345 ms/op | 0.96 |
isKnown best case - 1 super set check | 204.00 ns/op | 212.00 ns/op | 0.96 |
isKnown normal case - 2 super set checks | 200.00 ns/op | 208.00 ns/op | 0.96 |
isKnown worse case - 16 super set checks | 199.00 ns/op | 213.00 ns/op | 0.93 |
InMemoryCheckpointStateCache - add get delete | 2.3970 us/op | 2.5610 us/op | 0.94 |
validate api signedAggregateAndProof - struct | 2.5293 ms/op | 1.9620 ms/op | 1.29 |
validate gossip signedAggregateAndProof - struct | 1.7263 ms/op | 2.1001 ms/op | 0.82 |
batch validate gossip attestation - vc 640000 - chunk 32 | 117.43 us/op | 132.63 us/op | 0.89 |
batch validate gossip attestation - vc 640000 - chunk 64 | 105.30 us/op | 112.02 us/op | 0.94 |
batch validate gossip attestation - vc 640000 - chunk 128 | 98.080 us/op | 119.60 us/op | 0.82 |
batch validate gossip attestation - vc 640000 - chunk 256 | 110.63 us/op | 108.60 us/op | 1.02 |
pickEth1Vote - no votes | 1.0520 ms/op | 1.0975 ms/op | 0.96 |
pickEth1Vote - max votes | 8.5419 ms/op | 15.110 ms/op | 0.57 |
pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 13.578 ms/op | 18.955 ms/op | 0.72 |
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 19.616 ms/op | 33.121 ms/op | 0.59 |
pickEth1Vote - Eth1Data fastSerialize value x2048 | 465.28 us/op | 596.60 us/op | 0.78 |
pickEth1Vote - Eth1Data fastSerialize tree x2048 | 2.5106 ms/op | 4.9907 ms/op | 0.50 |
bytes32 toHexString | 395.00 ns/op | 552.00 ns/op | 0.72 |
bytes32 Buffer.toString(hex) | 244.00 ns/op | 369.00 ns/op | 0.66 |
bytes32 Buffer.toString(hex) from Uint8Array | 343.00 ns/op | 436.00 ns/op | 0.79 |
bytes32 Buffer.toString(hex) + 0x | 246.00 ns/op | 332.00 ns/op | 0.74 |
Object access 1 prop | 0.12500 ns/op | 0.18500 ns/op | 0.68 |
Map access 1 prop | 0.13200 ns/op | 0.15200 ns/op | 0.87 |
Object get x1000 | 6.1080 ns/op | 6.5590 ns/op | 0.93 |
Map get x1000 | 6.6840 ns/op | 7.7150 ns/op | 0.87 |
Object set x1000 | 32.640 ns/op | 36.571 ns/op | 0.89 |
Map set x1000 | 22.764 ns/op | 24.452 ns/op | 0.93 |
Return object 10000 times | 0.30590 ns/op | 0.31640 ns/op | 0.97 |
Throw Error 10000 times | 4.6479 us/op | 4.7595 us/op | 0.98 |
toHex | 140.75 ns/op | 188.42 ns/op | 0.75 |
Buffer.from | 127.19 ns/op | 179.72 ns/op | 0.71 |
shared Buffer | 82.520 ns/op | 90.619 ns/op | 0.91 |
fastMsgIdFn sha256 / 200 bytes | 2.3330 us/op | 2.8140 us/op | 0.83 |
fastMsgIdFn h32 xxhash / 200 bytes | 212.00 ns/op | 285.00 ns/op | 0.74 |
fastMsgIdFn h64 xxhash / 200 bytes | 291.00 ns/op | 398.00 ns/op | 0.73 |
fastMsgIdFn sha256 / 1000 bytes | 7.5710 us/op | 7.8420 us/op | 0.97 |
fastMsgIdFn h32 xxhash / 1000 bytes | 355.00 ns/op | 440.00 ns/op | 0.81 |
fastMsgIdFn h64 xxhash / 1000 bytes | 392.00 ns/op | 436.00 ns/op | 0.90 |
fastMsgIdFn sha256 / 10000 bytes | 68.645 us/op | 93.655 us/op | 0.73 |
fastMsgIdFn h32 xxhash / 10000 bytes | 1.9490 us/op | 1.9950 us/op | 0.98 |
fastMsgIdFn h64 xxhash / 10000 bytes | 1.3170 us/op | 1.3230 us/op | 1.00 |
send data - 1000 256B messages | 16.958 ms/op | 21.280 ms/op | 0.80 |
send data - 1000 512B messages | 21.761 ms/op | 26.494 ms/op | 0.82 |
send data - 1000 1024B messages | 32.890 ms/op | 46.720 ms/op | 0.70 |
send data - 1000 1200B messages | 30.224 ms/op | 33.682 ms/op | 0.90 |
send data - 1000 2048B messages | 26.800 ms/op | 33.650 ms/op | 0.80 |
send data - 1000 4096B messages | 34.681 ms/op | 42.121 ms/op | 0.82 |
send data - 1000 16384B messages | 76.897 ms/op | 110.26 ms/op | 0.70 |
send data - 1000 65536B messages | 261.29 ms/op | 1.0520 s/op | 0.25 |
enrSubnets - fastDeserialize 64 bits | 980.00 ns/op | 1.2250 us/op | 0.80 |
enrSubnets - ssz BitVector 64 bits | 366.00 ns/op | 353.00 ns/op | 1.04 |
enrSubnets - fastDeserialize 4 bits | 180.00 ns/op | 190.00 ns/op | 0.95 |
enrSubnets - ssz BitVector 4 bits | 387.00 ns/op | 851.00 ns/op | 0.45 |
prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 144.61 us/op | 250.70 us/op | 0.58 |
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 180.48 us/op | 350.58 us/op | 0.51 |
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 225.07 us/op | 321.42 us/op | 0.70 |
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 428.98 us/op | 1.0420 ms/op | 0.41 |
prioritizePeers score 0:0 att 64-1 sync 4-1 | 537.58 us/op | 1.1296 ms/op | 0.48 |
array of 16000 items push then shift | 1.7694 us/op | 1.8520 us/op | 0.96 |
LinkedList of 16000 items push then shift | 10.770 ns/op | 15.433 ns/op | 0.70 |
array of 16000 items push then pop | 88.992 ns/op | 135.60 ns/op | 0.66 |
LinkedList of 16000 items push then pop | 8.7810 ns/op | 10.650 ns/op | 0.82 |
array of 24000 items push then shift | 2.8534 us/op | 4.0615 us/op | 0.70 |
LinkedList of 24000 items push then shift | 10.195 ns/op | 18.048 ns/op | 0.56 |
array of 24000 items push then pop | 134.31 ns/op | 159.27 ns/op | 0.84 |
LinkedList of 24000 items push then pop | 13.867 ns/op | 10.323 ns/op | 1.34 |
intersect bitArray bitLen 8 | 6.9830 ns/op | 13.173 ns/op | 0.53 |
intersect array and set length 8 | 44.797 ns/op | 57.996 ns/op | 0.77 |
intersect bitArray bitLen 128 | 49.959 ns/op | 33.504 ns/op | 1.49 |
intersect array and set length 128 | 734.48 ns/op | 748.87 ns/op | 0.98 |
bitArray.getTrueBitIndexes() bitLen 128 | 1.1540 us/op | 1.5560 us/op | 0.74 |
bitArray.getTrueBitIndexes() bitLen 248 | 1.9600 us/op | 3.4010 us/op | 0.58 |
bitArray.getTrueBitIndexes() bitLen 512 | 4.1210 us/op | 6.5880 us/op | 0.63 |
Buffer.concat 32 items | 835.00 ns/op | 1.2590 us/op | 0.66 |
Uint8Array.set 32 items | 1.5780 us/op | 3.1430 us/op | 0.50 |
Buffer.copy | 3.3900 us/op | 4.6230 us/op | 0.73 |
Uint8Array.set - with subarray | 2.4200 us/op | 4.3730 us/op | 0.55 |
Uint8Array.set - without subarray | 1.5410 us/op | 2.3230 us/op | 0.66 |
getUint32 - dataview | 238.00 ns/op | 222.00 ns/op | 1.07 |
getUint32 - manual | 137.00 ns/op | 185.00 ns/op | 0.74 |
Set add up to 64 items then delete first | 3.0916 us/op | 4.1481 us/op | 0.75 |
OrderedSet add up to 64 items then delete first | 5.4716 us/op | 6.4157 us/op | 0.85 |
Set add up to 64 items then delete last | 3.5055 us/op | 3.5680 us/op | 0.98 |
OrderedSet add up to 64 items then delete last | 6.5966 us/op | 7.1563 us/op | 0.92 |
Set add up to 64 items then delete middle | 3.9829 us/op | 3.9705 us/op | 1.00 |
OrderedSet add up to 64 items then delete middle | 7.2436 us/op | 10.608 us/op | 0.68 |
Set add up to 128 items then delete first | 6.6816 us/op | 9.3361 us/op | 0.72 |
OrderedSet add up to 128 items then delete first | 12.488 us/op | 14.554 us/op | 0.86 |
Set add up to 128 items then delete last | 7.0941 us/op | 7.7619 us/op | 0.91 |
OrderedSet add up to 128 items then delete last | 11.518 us/op | 12.641 us/op | 0.91 |
Set add up to 128 items then delete middle | 7.3332 us/op | 7.6438 us/op | 0.96 |
OrderedSet add up to 128 items then delete middle | 18.617 us/op | 18.772 us/op | 0.99 |
Set add up to 256 items then delete first | 14.475 us/op | 18.849 us/op | 0.77 |
OrderedSet add up to 256 items then delete first | 21.317 us/op | 26.159 us/op | 0.81 |
Set add up to 256 items then delete last | 13.867 us/op | 15.461 us/op | 0.90 |
OrderedSet add up to 256 items then delete last | 21.749 us/op | 24.127 us/op | 0.90 |
Set add up to 256 items then delete middle | 13.807 us/op | 15.676 us/op | 0.88 |
OrderedSet add up to 256 items then delete middle | 51.629 us/op | 60.322 us/op | 0.86 |
transfer serialized Status (84 B) | 2.4220 us/op | 3.4730 us/op | 0.70 |
copy serialized Status (84 B) | 1.3780 us/op | 2.3930 us/op | 0.58 |
transfer serialized SignedVoluntaryExit (112 B) | 2.4690 us/op | 3.9020 us/op | 0.63 |
copy serialized SignedVoluntaryExit (112 B) | 1.3810 us/op | 2.0730 us/op | 0.67 |
transfer serialized ProposerSlashing (416 B) | 2.5630 us/op | 4.6470 us/op | 0.55 |
copy serialized ProposerSlashing (416 B) | 1.8040 us/op | 2.6860 us/op | 0.67 |
transfer serialized Attestation (485 B) | 2.5810 us/op | 3.5980 us/op | 0.72 |
copy serialized Attestation (485 B) | 2.0720 us/op | 2.6110 us/op | 0.79 |
transfer serialized AttesterSlashing (33232 B) | 2.7070 us/op | 4.3700 us/op | 0.62 |
copy serialized AttesterSlashing (33232 B) | 5.6850 us/op | 6.5450 us/op | 0.87 |
transfer serialized Small SignedBeaconBlock (128000 B) | 3.3370 us/op | 4.1600 us/op | 0.80 |
copy serialized Small SignedBeaconBlock (128000 B) | 18.203 us/op | 17.977 us/op | 1.01 |
transfer serialized Avg SignedBeaconBlock (200000 B) | 4.3560 us/op | 5.5860 us/op | 0.78 |
copy serialized Avg SignedBeaconBlock (200000 B) | 25.754 us/op | 27.097 us/op | 0.95 |
transfer serialized BlobsSidecar (524380 B) | 7.3840 us/op | 6.0250 us/op | 1.23 |
copy serialized BlobsSidecar (524380 B) | 81.479 us/op | 106.60 us/op | 0.76 |
transfer serialized Big SignedBeaconBlock (1000000 B) | 6.4310 us/op | 7.9860 us/op | 0.81 |
copy serialized Big SignedBeaconBlock (1000000 B) | 132.66 us/op | 221.60 us/op | 0.60 |
pass gossip attestations to forkchoice per slot | 3.0023 ms/op | 2.9551 ms/op | 1.02 |
forkChoice updateHead vc 100000 bc 64 eq 0 | 578.56 us/op | 483.53 us/op | 1.20 |
forkChoice updateHead vc 600000 bc 64 eq 0 | 4.4408 ms/op | 3.0179 ms/op | 1.47 |
forkChoice updateHead vc 1000000 bc 64 eq 0 | 6.4184 ms/op | 6.0153 ms/op | 1.07 |
forkChoice updateHead vc 600000 bc 320 eq 0 | 3.3538 ms/op | 4.2102 ms/op | 0.80 |
forkChoice updateHead vc 600000 bc 1200 eq 0 | 3.2690 ms/op | 4.8076 ms/op | 0.68 |
forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.5619 ms/op | 5.0143 ms/op | 0.71 |
forkChoice updateHead vc 600000 bc 64 eq 1000 | 11.269 ms/op | 12.048 ms/op | 0.94 |
forkChoice updateHead vc 600000 bc 64 eq 10000 | 11.281 ms/op | 13.052 ms/op | 0.86 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 37.098 ms/op | 39.327 ms/op | 0.94 |
computeDeltas 500000 validators 300 proto nodes | 5.2080 ms/op | 5.1378 ms/op | 1.01 |
computeDeltas 500000 validators 1200 proto nodes | 4.7372 ms/op | 4.7155 ms/op | 1.00 |
computeDeltas 500000 validators 7200 proto nodes | 5.8314 ms/op | 6.4486 ms/op | 0.90 |
computeDeltas 750000 validators 300 proto nodes | 9.1873 ms/op | 9.1870 ms/op | 1.00 |
computeDeltas 750000 validators 1200 proto nodes | 9.0692 ms/op | 9.1963 ms/op | 0.99 |
computeDeltas 750000 validators 7200 proto nodes | 8.9258 ms/op | 8.3635 ms/op | 1.07 |
computeDeltas 1400000 validators 300 proto nodes | 17.064 ms/op | 13.589 ms/op | 1.26 |
computeDeltas 1400000 validators 1200 proto nodes | 20.844 ms/op | 11.918 ms/op | 1.75 |
computeDeltas 1400000 validators 7200 proto nodes | 18.036 ms/op | 12.476 ms/op | 1.45 |
computeDeltas 2100000 validators 300 proto nodes | 21.976 ms/op | 18.329 ms/op | 1.20 |
computeDeltas 2100000 validators 1200 proto nodes | 18.957 ms/op | 19.197 ms/op | 0.99 |
computeDeltas 2100000 validators 7200 proto nodes | 19.294 ms/op | 17.641 ms/op | 1.09 |
altair processAttestation - 250000 vs - 7PWei normalcase | 3.1518 ms/op | 2.0969 ms/op | 1.50 |
altair processAttestation - 250000 vs - 7PWei worstcase | 3.8687 ms/op | 3.0734 ms/op | 1.26 |
altair processAttestation - setStatus - 1/6 committees join | 186.26 us/op | 139.48 us/op | 1.34 |
altair processAttestation - setStatus - 1/3 committees join | 301.56 us/op | 292.41 us/op | 1.03 |
altair processAttestation - setStatus - 1/2 committees join | 410.68 us/op | 366.99 us/op | 1.12 |
altair processAttestation - setStatus - 2/3 committees join | 536.26 us/op | 452.13 us/op | 1.19 |
altair processAttestation - setStatus - 4/5 committees join | 713.88 us/op | 596.03 us/op | 1.20 |
altair processAttestation - setStatus - 100% committees join | 1.1347 ms/op | 720.08 us/op | 1.58 |
altair processBlock - 250000 vs - 7PWei normalcase | 6.2332 ms/op | 5.5780 ms/op | 1.12 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 32.497 ms/op | 33.125 ms/op | 0.98 |
altair processBlock - 250000 vs - 7PWei worstcase | 43.763 ms/op | 40.648 ms/op | 1.08 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 107.48 ms/op | 87.007 ms/op | 1.24 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 2.9202 ms/op | 2.0353 ms/op | 1.43 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 27.882 ms/op | 29.716 ms/op | 0.94 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 495.47 us/op | 371.57 us/op | 1.33 |
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 8.0700 us/op | 5.6810 us/op | 1.42 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 49.542 us/op | 41.747 us/op | 1.19 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 13.900 us/op | 9.0500 us/op | 1.54 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 7.6080 us/op | 4.6350 us/op | 1.64 |
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 174.19 us/op | 151.37 us/op | 1.15 |
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.3428 ms/op | 1.1096 ms/op | 1.21 |
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.9705 ms/op | 2.0252 ms/op | 0.97 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.8884 ms/op | 2.0130 ms/op | 0.94 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 4.1350 ms/op | 3.3826 ms/op | 1.22 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 2.0587 ms/op | 1.6947 ms/op | 1.21 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 4.4527 ms/op | 3.5495 ms/op | 1.25 |
Tree 40 250000 create | 854.61 ms/op | 453.42 ms/op | 1.88 |
Tree 40 250000 get(125000) | 177.81 ns/op | 145.21 ns/op | 1.22 |
Tree 40 250000 set(125000) | 3.3260 us/op | 1.5399 us/op | 2.16 |
Tree 40 250000 toArray() | 23.297 ms/op | 21.200 ms/op | 1.10 |
Tree 40 250000 iterate all - toArray() + loop | 24.144 ms/op | 19.916 ms/op | 1.21 |
Tree 40 250000 iterate all - get(i) | 67.094 ms/op | 57.163 ms/op | 1.17 |
Array 250000 create | 4.6477 ms/op | 3.4384 ms/op | 1.35 |
Array 250000 clone - spread | 4.2059 ms/op | 817.80 us/op | 5.14 |
Array 250000 get(125000) | 0.46400 ns/op | 0.41600 ns/op | 1.12 |
Array 250000 set(125000) | 0.60700 ns/op | 0.46700 ns/op | 1.30 |
Array 250000 iterate all - loop | 96.145 us/op | 111.14 us/op | 0.87 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 54.993 ms/op | 43.427 ms/op | 1.27 |
Array.fill - length 1000000 | 9.3748 ms/op | 3.8178 ms/op | 2.46 |
Array push - length 1000000 | 27.580 ms/op | 13.880 ms/op | 1.99 |
Array.get | 0.33287 ns/op | 0.28216 ns/op | 1.18 |
Uint8Array.get | 0.55127 ns/op | 0.44578 ns/op | 1.24 |
phase0 beforeProcessEpoch - 250000 vs - 7PWei | 22.149 ms/op | 16.531 ms/op | 1.34 |
altair processEpoch - mainnet_e81889 | 393.21 ms/op | 253.00 ms/op | 1.55 |
mainnet_e81889 - altair beforeProcessEpoch | 42.356 ms/op | 18.990 ms/op | 2.23 |
mainnet_e81889 - altair processJustificationAndFinalization | 10.786 us/op | 5.7920 us/op | 1.86 |
mainnet_e81889 - altair processInactivityUpdates | 9.4127 ms/op | 4.5080 ms/op | 2.09 |
mainnet_e81889 - altair processRewardsAndPenalties | 72.533 ms/op | 43.110 ms/op | 1.68 |
mainnet_e81889 - altair processRegistryUpdates | 1.5390 us/op | 706.00 ns/op | 2.18 |
mainnet_e81889 - altair processSlashings | 327.00 ns/op | 199.00 ns/op | 1.64 |
mainnet_e81889 - altair processEth1DataReset | 304.00 ns/op | 178.00 ns/op | 1.71 |
mainnet_e81889 - altair processEffectiveBalanceUpdates | 2.6304 ms/op | 1.2645 ms/op | 2.08 |
mainnet_e81889 - altair processSlashingsReset | 2.0200 us/op | 949.00 ns/op | 2.13 |
mainnet_e81889 - altair processRandaoMixesReset | 2.1480 us/op | 1.2410 us/op | 1.73 |
mainnet_e81889 - altair processHistoricalRootsUpdate | 452.00 ns/op | 183.00 ns/op | 2.47 |
mainnet_e81889 - altair processParticipationFlagUpdates | 1.0990 us/op | 565.00 ns/op | 1.95 |
mainnet_e81889 - altair processSyncCommitteeUpdates | 337.00 ns/op | 151.00 ns/op | 2.23 |
mainnet_e81889 - altair afterProcessEpoch | 62.796 ms/op | 44.601 ms/op | 1.41 |
capella processEpoch - mainnet_e217614 | 1.9183 s/op | 1.0478 s/op | 1.83 |
mainnet_e217614 - capella beforeProcessEpoch | 166.70 ms/op | 62.464 ms/op | 2.67 |
mainnet_e217614 - capella processJustificationAndFinalization | 15.624 us/op | 5.7340 us/op | 2.72 |
mainnet_e217614 - capella processInactivityUpdates | 42.384 ms/op | 15.325 ms/op | 2.77 |
mainnet_e217614 - capella processRewardsAndPenalties | 358.04 ms/op | 202.34 ms/op | 1.77 |
mainnet_e217614 - capella processRegistryUpdates | 14.544 us/op | 6.8590 us/op | 2.12 |
mainnet_e217614 - capella processSlashings | 516.00 ns/op | 190.00 ns/op | 2.72 |
mainnet_e217614 - capella processEth1DataReset | 536.00 ns/op | 176.00 ns/op | 3.05 |
mainnet_e217614 - capella processEffectiveBalanceUpdates | 25.315 ms/op | 4.1943 ms/op | 6.04 |
mainnet_e217614 - capella processSlashingsReset | 2.3760 us/op | 984.00 ns/op | 2.41 |
mainnet_e217614 - capella processRandaoMixesReset | 2.7770 us/op | 1.4830 us/op | 1.87 |
mainnet_e217614 - capella processHistoricalRootsUpdate | 524.00 ns/op | 195.00 ns/op | 2.69 |
mainnet_e217614 - capella processParticipationFlagUpdates | 1.3340 us/op | 561.00 ns/op | 2.38 |
mainnet_e217614 - capella afterProcessEpoch | 142.39 ms/op | 117.35 ms/op | 1.21 |
phase0 processEpoch - mainnet_e58758 | 656.39 ms/op | 325.71 ms/op | 2.02 |
mainnet_e58758 - phase0 beforeProcessEpoch | 211.41 ms/op | 94.830 ms/op | 2.23 |
mainnet_e58758 - phase0 processJustificationAndFinalization | 12.623 us/op | 6.9630 us/op | 1.81 |
mainnet_e58758 - phase0 processRewardsAndPenalties | 68.789 ms/op | 41.186 ms/op | 1.67 |
mainnet_e58758 - phase0 processRegistryUpdates | 5.8010 us/op | 2.9620 us/op | 1.96 |
mainnet_e58758 - phase0 processSlashings | 310.00 ns/op | 189.00 ns/op | 1.64 |
mainnet_e58758 - phase0 processEth1DataReset | 330.00 ns/op | 174.00 ns/op | 1.90 |
mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 6.8400 ms/op | 1.1676 ms/op | 5.86 |
mainnet_e58758 - phase0 processSlashingsReset | 2.3050 us/op | 1.0060 us/op | 2.29 |
mainnet_e58758 - phase0 processRandaoMixesReset | 1.9670 us/op | 1.2430 us/op | 1.58 |
mainnet_e58758 - phase0 processHistoricalRootsUpdate | 216.00 ns/op | 177.00 ns/op | 1.22 |
mainnet_e58758 - phase0 processParticipationRecordUpdates | 1.7310 us/op | 877.00 ns/op | 1.97 |
mainnet_e58758 - phase0 afterProcessEpoch | 106.02 ms/op | 35.617 ms/op | 2.98 |
phase0 processEffectiveBalanceUpdates - 250000 normalcase | 2.6336 ms/op | 1.4567 ms/op | 1.81 |
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 7.2589 ms/op | 1.9147 ms/op | 3.79 |
altair processInactivityUpdates - 250000 normalcase | 37.292 ms/op | 16.223 ms/op | 2.30 |
altair processInactivityUpdates - 250000 worstcase | 37.526 ms/op | 19.452 ms/op | 1.93 |
phase0 processRegistryUpdates - 250000 normalcase | 20.106 us/op | 6.4180 us/op | 3.13 |
phase0 processRegistryUpdates - 250000 badcase_full_deposits | 583.17 us/op | 426.81 us/op | 1.37 |
phase0 processRegistryUpdates - 250000 worstcase 0.5 | 197.12 ms/op | 126.72 ms/op | 1.56 |
altair processRewardsAndPenalties - 250000 normalcase | 40.543 ms/op | 33.783 ms/op | 1.20 |
altair processRewardsAndPenalties - 250000 worstcase | 51.711 ms/op | 34.406 ms/op | 1.50 |
phase0 getAttestationDeltas - 250000 normalcase | 15.494 ms/op | 6.9312 ms/op | 2.24 |
phase0 getAttestationDeltas - 250000 worstcase | 9.5122 ms/op | 6.5707 ms/op | 1.45 |
phase0 processSlashings - 250000 worstcase | 128.20 us/op | 122.43 us/op | 1.05 |
altair processSyncCommitteeUpdates - 250000 | 15.071 ms/op | 10.751 ms/op | 1.40 |
BeaconState.hashTreeRoot - No change | 263.00 ns/op | 223.00 ns/op | 1.18 |
BeaconState.hashTreeRoot - 1 full validator | 109.38 us/op | 88.808 us/op | 1.23 |
BeaconState.hashTreeRoot - 32 full validator | 1.4455 ms/op | 1.3317 ms/op | 1.09 |
BeaconState.hashTreeRoot - 512 full validator | 14.566 ms/op | 11.105 ms/op | 1.31 |
BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 142.81 us/op | 123.35 us/op | 1.16 |
BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 2.1797 ms/op | 2.1075 ms/op | 1.03 |
BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 31.434 ms/op | 31.267 ms/op | 1.01 |
BeaconState.hashTreeRoot - 1 balances | 103.58 us/op | 96.425 us/op | 1.07 |
BeaconState.hashTreeRoot - 32 balances | 998.44 us/op | 1.1923 ms/op | 0.84 |
BeaconState.hashTreeRoot - 512 balances | 12.637 ms/op | 9.7817 ms/op | 1.29 |
BeaconState.hashTreeRoot - 250000 balances | 209.40 ms/op | 198.08 ms/op | 1.06 |
aggregationBits - 2048 els - zipIndexesInBitList | 26.704 us/op | 20.633 us/op | 1.29 |
byteArrayEquals 32 | 57.561 ns/op | 51.795 ns/op | 1.11 |
Buffer.compare 32 | 18.208 ns/op | 16.655 ns/op | 1.09 |
byteArrayEquals 1024 | 1.7348 us/op | 1.5329 us/op | 1.13 |
Buffer.compare 1024 | 27.010 ns/op | 24.860 ns/op | 1.09 |
byteArrayEquals 16384 | 26.861 us/op | 24.862 us/op | 1.08 |
Buffer.compare 16384 | 205.44 ns/op | 183.37 ns/op | 1.12 |
byteArrayEquals 123687377 | 206.20 ms/op | 190.50 ms/op | 1.08 |
Buffer.compare 123687377 | 9.2149 ms/op | 6.7590 ms/op | 1.36 |
byteArrayEquals 32 - diff last byte | 56.434 ns/op | 52.590 ns/op | 1.07 |
Buffer.compare 32 - diff last byte | 17.763 ns/op | 17.355 ns/op | 1.02 |
byteArrayEquals 1024 - diff last byte | 1.7040 us/op | 1.5881 us/op | 1.07 |
Buffer.compare 1024 - diff last byte | 26.997 ns/op | 24.823 ns/op | 1.09 |
byteArrayEquals 16384 - diff last byte | 26.319 us/op | 25.240 us/op | 1.04 |
Buffer.compare 16384 - diff last byte | 185.98 ns/op | 189.21 ns/op | 0.98 |
byteArrayEquals 123687377 - diff last byte | 214.85 ms/op | 198.64 ms/op | 1.08 |
Buffer.compare 123687377 - diff last byte | 9.9639 ms/op | 10.400 ms/op | 0.96 |
byteArrayEquals 32 - random bytes | 5.5560 ns/op | 5.4050 ns/op | 1.03 |
Buffer.compare 32 - random bytes | 18.926 ns/op | 18.747 ns/op | 1.01 |
byteArrayEquals 1024 - random bytes | 5.6330 ns/op | 5.4330 ns/op | 1.04 |
Buffer.compare 1024 - random bytes | 18.657 ns/op | 18.136 ns/op | 1.03 |
byteArrayEquals 16384 - random bytes | 5.5970 ns/op | 5.4510 ns/op | 1.03 |
Buffer.compare 16384 - random bytes | 18.862 ns/op | 17.678 ns/op | 1.07 |
byteArrayEquals 123687377 - random bytes | 6.9000 ns/op | 6.9200 ns/op | 1.00 |
Buffer.compare 123687377 - random bytes | 19.830 ns/op | 18.960 ns/op | 1.05 |
regular array get 100000 times | 47.286 us/op | 45.036 us/op | 1.05 |
wrappedArray get 100000 times | 35.564 us/op | 39.101 us/op | 0.91 |
arrayWithProxy get 100000 times | 13.034 ms/op | 12.537 ms/op | 1.04 |
ssz.Root.equals | 48.370 ns/op | 48.895 ns/op | 0.99 |
byteArrayEquals | 47.754 ns/op | 46.737 ns/op | 1.02 |
Buffer.compare | 11.248 ns/op | 10.610 ns/op | 1.06 |
processSlot - 1 slots | 11.883 us/op | 11.311 us/op | 1.05 |
processSlot - 32 slots | 3.1666 ms/op | 2.3788 ms/op | 1.33 |
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 4.7877 ms/op | 4.7693 ms/op | 1.00 |
getCommitteeAssignments - req 1 vs - 250000 vc | 2.2950 ms/op | 2.2733 ms/op | 1.01 |
getCommitteeAssignments - req 100 vs - 250000 vc | 4.5947 ms/op | 4.2950 ms/op | 1.07 |
getCommitteeAssignments - req 1000 vs - 250000 vc | 4.7668 ms/op | 4.9535 ms/op | 0.96 |
findModifiedValidators - 10000 modified validators | 769.74 ms/op | 820.60 ms/op | 0.94 |
findModifiedValidators - 1000 modified validators | 823.21 ms/op | 832.36 ms/op | 0.99 |
findModifiedValidators - 100 modified validators | 315.85 ms/op | 231.72 ms/op | 1.36 |
findModifiedValidators - 10 modified validators | 213.06 ms/op | 282.49 ms/op | 0.75 |
findModifiedValidators - 1 modified validators | 202.74 ms/op | 308.18 ms/op | 0.66 |
findModifiedValidators - no difference | 210.09 ms/op | 222.10 ms/op | 0.95 |
compare ViewDUs | 8.8633 s/op | 7.4428 s/op | 1.19 |
compare each validator Uint8Array | 2.1663 s/op | 2.0018 s/op | 1.08 |
compare ViewDU to Uint8Array | 1.3827 s/op | 1.3446 s/op | 1.03 |
migrate state 1000000 validators, 24 modified, 0 new | 1.2515 s/op | 1.0015 s/op | 1.25 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.6105 s/op | 1.4045 s/op | 1.15 |
migrate state 1000000 validators, 3400 modified, 2000 new | 1.6612 s/op | 1.6239 s/op | 1.02 |
migrate state 1500000 validators, 24 modified, 0 new | 1.1227 s/op | 1.0545 s/op | 1.06 |
migrate state 1500000 validators, 1700 modified, 1000 new | 1.2523 s/op | 1.1315 s/op | 1.11 |
migrate state 1500000 validators, 3400 modified, 2000 new | 1.4826 s/op | 1.5950 s/op | 0.93 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.6300 ns/op | 4.5100 ns/op | 1.25 |
state getBlockRootAtSlot - 250000 vs - 7PWei | 445.71 ns/op | 598.76 ns/op | 0.74 |
naive computeProposerIndex 100000 validators | 59.522 ms/op | 75.659 ms/op | 0.79 |
computeProposerIndex 100000 validators | 1.5483 ms/op | 1.7870 ms/op | 0.87 |
naiveGetNextSyncCommitteeIndices 1000 validators | 8.9672 s/op | 9.7376 s/op | 0.92 |
getNextSyncCommitteeIndices 1000 validators | 146.47 ms/op | 158.56 ms/op | 0.92 |
naiveGetNextSyncCommitteeIndices 10000 validators | 8.7063 s/op | 10.907 s/op | 0.80 |
getNextSyncCommitteeIndices 10000 validators | 120.90 ms/op | 170.38 ms/op | 0.71 |
naiveGetNextSyncCommitteeIndices 100000 validators | 8.6496 s/op | 9.1489 s/op | 0.95 |
getNextSyncCommitteeIndices 100000 validators | 116.61 ms/op | 137.62 ms/op | 0.85 |
naive computeShuffledIndex 100000 validators | 26.335 s/op | 27.296 s/op | 0.96 |
cached computeShuffledIndex 100000 validators | 589.51 ms/op | 557.07 ms/op | 1.06 |
naive computeShuffledIndex 2000000 validators | 497.15 s/op | 549.07 s/op | 0.91 |
cached computeShuffledIndex 2000000 validators | 41.468 s/op | 34.798 s/op | 1.19 |
computeProposers - vc 250000 | 685.81 us/op | 596.49 us/op | 1.15 |
computeEpochShuffling - vc 250000 | 46.104 ms/op | 41.885 ms/op | 1.10 |
getNextSyncCommittee - vc 250000 | 11.329 ms/op | 10.420 ms/op | 1.09 |
computeSigningRoot for AttestationData | 22.554 us/op | 18.543 us/op | 1.22 |
hash AttestationData serialized data then Buffer.toString(base64) | 1.6829 us/op | 1.5479 us/op | 1.09 |
toHexString serialized data | 1.4334 us/op | 1.0978 us/op | 1.31 |
Buffer.toString(base64) | 160.69 ns/op | 160.14 ns/op | 1.00 |
nodejs block root to RootHex using toHex | 149.27 ns/op | 136.57 ns/op | 1.09 |
nodejs block root to RootHex using toRootHex | 86.796 ns/op | 87.840 ns/op | 0.99 |
browser block root to RootHex using the deprecated toHexString | 226.75 ns/op | 210.54 ns/op | 1.08 |
browser block root to RootHex using toHex | 175.35 ns/op | 170.77 ns/op | 1.03 |
browser block root to RootHex using toRootHex | 169.18 ns/op | 159.42 ns/op | 1.06 |
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% +0.01%
============================================
Files 604 604
Lines 40466 40466
Branches 2228 2228
============================================
+ Hits 20324 20330 +6
+ Misses 20102 20094 -8
- 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