Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: improve sync pubkeys #7010

Merged
merged 2 commits into from
Aug 9, 2024
Merged

fix: improve sync pubkeys #7010

merged 2 commits into from
Aug 9, 2024

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Aug 8, 2024

Motivation

Improve sync pubkeys at startup time

Description

  • Reuse validators array from the consumer side
  • Preallocate Index2PubkeyCache array

@twoeths twoeths requested a review from a team as a code owner August 8, 2024 06:40
Copy link

codecov bot commented Aug 8, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 49.23%. Comparing base (a0f16eb) to head (38cd9e9).

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #7010   +/-   ##
=========================================
  Coverage     49.23%   49.23%           
=========================================
  Files           578      578           
  Lines         37426    37426           
  Branches       2165     2165           
=========================================
  Hits          18426    18426           
  Misses        18960    18960           
  Partials         40       40           

Copy link
Contributor

github-actions bot commented Aug 8, 2024

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 6ed1afe Previous: a0f16eb Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.0067 ms/op 2.2402 ms/op 0.90
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 48.800 us/op 52.094 us/op 0.94
BLS verify - blst 845.40 us/op 1.0112 ms/op 0.84
BLS verifyMultipleSignatures 3 - blst 1.4910 ms/op 1.3979 ms/op 1.07
BLS verifyMultipleSignatures 8 - blst 2.4891 ms/op 2.2227 ms/op 1.12
BLS verifyMultipleSignatures 32 - blst 7.1881 ms/op 5.9831 ms/op 1.20
BLS verifyMultipleSignatures 64 - blst 10.940 ms/op 11.071 ms/op 0.99
BLS verifyMultipleSignatures 128 - blst 16.910 ms/op 17.972 ms/op 0.94
BLS deserializing 10000 signatures 682.67 ms/op 711.76 ms/op 0.96
BLS deserializing 100000 signatures 6.7956 s/op 7.1058 s/op 0.96
BLS verifyMultipleSignatures - same message - 3 - blst 972.03 us/op 1.0674 ms/op 0.91
BLS verifyMultipleSignatures - same message - 8 - blst 1.4225 ms/op 1.1093 ms/op 1.28
BLS verifyMultipleSignatures - same message - 32 - blst 1.6831 ms/op 1.6840 ms/op 1.00
BLS verifyMultipleSignatures - same message - 64 - blst 2.5726 ms/op 2.5917 ms/op 0.99
BLS verifyMultipleSignatures - same message - 128 - blst 4.4214 ms/op 4.3763 ms/op 1.01
BLS aggregatePubkeys 32 - blst 20.069 us/op 20.222 us/op 0.99
BLS aggregatePubkeys 128 - blst 70.379 us/op 71.284 us/op 0.99
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 61.419 ms/op 75.199 ms/op 0.82
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 78.991 ms/op 70.341 ms/op 1.12
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 35.967 ms/op 38.289 ms/op 0.94
getSlashingsAndExits - default max 121.68 us/op 86.199 us/op 1.41
getSlashingsAndExits - 2k 295.02 us/op 272.42 us/op 1.08
proposeBlockBody type=full, size=empty 5.7848 ms/op 6.0206 ms/op 0.96
isKnown best case - 1 super set check 295.00 ns/op 330.00 ns/op 0.89
isKnown normal case - 2 super set checks 295.00 ns/op 291.00 ns/op 1.01
isKnown worse case - 16 super set checks 306.00 ns/op 291.00 ns/op 1.05
InMemoryCheckpointStateCache - add get delete 5.0840 us/op 4.8940 us/op 1.04
validate api signedAggregateAndProof - struct 2.0197 ms/op 1.7996 ms/op 1.12
validate gossip signedAggregateAndProof - struct 1.6664 ms/op 2.5936 ms/op 0.64
validate gossip attestation - vc 640000 1.1077 ms/op 1.0784 ms/op 1.03
batch validate gossip attestation - vc 640000 - chunk 32 134.98 us/op 132.02 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 64 111.74 us/op 111.98 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 128 104.05 us/op 106.39 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 256 103.68 us/op 109.42 us/op 0.95
pickEth1Vote - no votes 976.34 us/op 1.0082 ms/op 0.97
pickEth1Vote - max votes 10.072 ms/op 9.5975 ms/op 1.05
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.034 ms/op 13.685 ms/op 1.03
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.425 ms/op 20.456 ms/op 1.15
pickEth1Vote - Eth1Data fastSerialize value x2048 487.41 us/op 513.33 us/op 0.95
pickEth1Vote - Eth1Data fastSerialize tree x2048 8.0389 ms/op 3.8446 ms/op 2.09
bytes32 toHexString 416.00 ns/op 436.00 ns/op 0.95
bytes32 Buffer.toString(hex) 247.00 ns/op 263.00 ns/op 0.94
bytes32 Buffer.toString(hex) from Uint8Array 350.00 ns/op 392.00 ns/op 0.89
bytes32 Buffer.toString(hex) + 0x 247.00 ns/op 265.00 ns/op 0.93
Object access 1 prop 0.12700 ns/op 0.14200 ns/op 0.89
Map access 1 prop 0.12400 ns/op 0.13700 ns/op 0.91
Object get x1000 5.7750 ns/op 5.8350 ns/op 0.99
Map get x1000 6.3690 ns/op 6.8670 ns/op 0.93
Object set x1000 31.222 ns/op 36.111 ns/op 0.86
Map set x1000 21.313 ns/op 27.441 ns/op 0.78
Return object 10000 times 0.28470 ns/op 0.34080 ns/op 0.84
Throw Error 10000 times 3.2980 us/op 3.4243 us/op 0.96
fastMsgIdFn sha256 / 200 bytes 2.2000 us/op 2.3460 us/op 0.94
fastMsgIdFn h32 xxhash / 200 bytes 221.00 ns/op 272.00 ns/op 0.81
fastMsgIdFn h64 xxhash / 200 bytes 264.00 ns/op 274.00 ns/op 0.96
fastMsgIdFn sha256 / 1000 bytes 7.3630 us/op 7.3140 us/op 1.01
fastMsgIdFn h32 xxhash / 1000 bytes 344.00 ns/op 410.00 ns/op 0.84
fastMsgIdFn h64 xxhash / 1000 bytes 333.00 ns/op 355.00 ns/op 0.94
fastMsgIdFn sha256 / 10000 bytes 63.921 us/op 65.705 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.8060 us/op 1.9470 us/op 0.93
fastMsgIdFn h64 xxhash / 10000 bytes 1.2090 us/op 1.2570 us/op 0.96
send data - 1000 256B messages 11.874 ms/op 14.528 ms/op 0.82
send data - 1000 512B messages 16.182 ms/op 17.999 ms/op 0.90
send data - 1000 1024B messages 27.135 ms/op 28.334 ms/op 0.96
send data - 1000 1200B messages 26.183 ms/op 25.625 ms/op 1.02
send data - 1000 2048B messages 31.551 ms/op 31.740 ms/op 0.99
send data - 1000 4096B messages 31.807 ms/op 34.339 ms/op 0.93
send data - 1000 16384B messages 71.216 ms/op 75.541 ms/op 0.94
send data - 1000 65536B messages 227.39 ms/op 214.23 ms/op 1.06
enrSubnets - fastDeserialize 64 bits 1.0990 us/op 1.1030 us/op 1.00
enrSubnets - ssz BitVector 64 bits 361.00 ns/op 380.00 ns/op 0.95
enrSubnets - fastDeserialize 4 bits 146.00 ns/op 162.00 ns/op 0.90
enrSubnets - ssz BitVector 4 bits 363.00 ns/op 387.00 ns/op 0.94
prioritizePeers score -10:0 att 32-0.1 sync 2-0 144.36 us/op 162.90 us/op 0.89
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 176.12 us/op 165.80 us/op 1.06
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 328.09 us/op 383.03 us/op 0.86
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 509.48 us/op 484.17 us/op 1.05
prioritizePeers score 0:0 att 64-1 sync 4-1 927.45 us/op 856.94 us/op 1.08
array of 16000 items push then shift 1.6717 us/op 1.7542 us/op 0.95
LinkedList of 16000 items push then shift 7.8690 ns/op 8.3100 ns/op 0.95
array of 16000 items push then pop 142.05 ns/op 146.13 ns/op 0.97
LinkedList of 16000 items push then pop 7.4110 ns/op 7.6690 ns/op 0.97
array of 24000 items push then shift 2.4613 us/op 2.5873 us/op 0.95
LinkedList of 24000 items push then shift 8.0680 ns/op 8.5720 ns/op 0.94
array of 24000 items push then pop 159.34 ns/op 184.88 ns/op 0.86
LinkedList of 24000 items push then pop 7.3990 ns/op 7.9980 ns/op 0.93
intersect bitArray bitLen 8 6.5690 ns/op 6.8830 ns/op 0.95
intersect array and set length 8 56.195 ns/op 51.108 ns/op 1.10
intersect bitArray bitLen 128 30.659 ns/op 30.647 ns/op 1.00
intersect array and set length 128 696.79 ns/op 723.91 ns/op 0.96
bitArray.getTrueBitIndexes() bitLen 128 2.2550 us/op 2.3530 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 248 4.4270 us/op 3.5650 us/op 1.24
bitArray.getTrueBitIndexes() bitLen 512 9.3970 us/op 9.4890 us/op 0.99
Buffer.concat 32 items 952.00 ns/op 1.0170 us/op 0.94
Uint8Array.set 32 items 1.5160 us/op 1.5730 us/op 0.96
Buffer.copy 2.1750 us/op 1.8440 us/op 1.18
Uint8Array.set - with subarray 3.1510 us/op 2.7250 us/op 1.16
Uint8Array.set - without subarray 1.9650 us/op 1.5270 us/op 1.29
getUint32 - dataview 260.00 ns/op 251.00 ns/op 1.04
getUint32 - manual 179.00 ns/op 210.00 ns/op 0.85
Set add up to 64 items then delete first 2.8905 us/op 2.7581 us/op 1.05
OrderedSet add up to 64 items then delete first 3.4944 us/op 4.2200 us/op 0.83
Set add up to 64 items then delete last 2.5519 us/op 3.1606 us/op 0.81
OrderedSet add up to 64 items then delete last 3.9143 us/op 4.0426 us/op 0.97
Set add up to 64 items then delete middle 3.1854 us/op 3.1689 us/op 1.01
OrderedSet add up to 64 items then delete middle 5.7893 us/op 6.4884 us/op 0.89
Set add up to 128 items then delete first 5.2202 us/op 6.2907 us/op 0.83
OrderedSet add up to 128 items then delete first 8.1448 us/op 9.7864 us/op 0.83
Set add up to 128 items then delete last 6.0277 us/op 5.9796 us/op 1.01
OrderedSet add up to 128 items then delete last 8.9658 us/op 9.2318 us/op 0.97
Set add up to 128 items then delete middle 5.8116 us/op 6.1902 us/op 0.94
OrderedSet add up to 128 items then delete middle 15.138 us/op 15.247 us/op 0.99
Set add up to 256 items then delete first 11.383 us/op 12.597 us/op 0.90
OrderedSet add up to 256 items then delete first 16.837 us/op 18.761 us/op 0.90
Set add up to 256 items then delete last 12.125 us/op 11.916 us/op 1.02
OrderedSet add up to 256 items then delete last 16.466 us/op 18.165 us/op 0.91
Set add up to 256 items then delete middle 10.903 us/op 11.253 us/op 0.97
OrderedSet add up to 256 items then delete middle 43.146 us/op 46.531 us/op 0.93
transfer serialized Status (84 B) 1.5590 us/op 1.4290 us/op 1.09
copy serialized Status (84 B) 1.1270 us/op 1.2420 us/op 0.91
transfer serialized SignedVoluntaryExit (112 B) 1.4850 us/op 1.4490 us/op 1.02
copy serialized SignedVoluntaryExit (112 B) 1.1740 us/op 1.3020 us/op 0.90
transfer serialized ProposerSlashing (416 B) 1.6110 us/op 1.8920 us/op 0.85
copy serialized ProposerSlashing (416 B) 1.4090 us/op 1.9360 us/op 0.73
transfer serialized Attestation (485 B) 2.0350 us/op 2.2310 us/op 0.91
copy serialized Attestation (485 B) 1.7830 us/op 2.3840 us/op 0.75
transfer serialized AttesterSlashing (33232 B) 2.2910 us/op 2.7310 us/op 0.84
copy serialized AttesterSlashing (33232 B) 5.4450 us/op 7.4210 us/op 0.73
transfer serialized Small SignedBeaconBlock (128000 B) 2.5970 us/op 3.0140 us/op 0.86
copy serialized Small SignedBeaconBlock (128000 B) 15.772 us/op 20.149 us/op 0.78
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2080 us/op 4.0510 us/op 0.79
copy serialized Avg SignedBeaconBlock (200000 B) 21.848 us/op 28.842 us/op 0.76
transfer serialized BlobsSidecar (524380 B) 3.3510 us/op 3.9740 us/op 0.84
copy serialized BlobsSidecar (524380 B) 79.232 us/op 94.261 us/op 0.84
transfer serialized Big SignedBeaconBlock (1000000 B) 3.1490 us/op 4.2310 us/op 0.74
copy serialized Big SignedBeaconBlock (1000000 B) 150.34 us/op 175.67 us/op 0.86
pass gossip attestations to forkchoice per slot 3.3994 ms/op 3.5119 ms/op 0.97
forkChoice updateHead vc 100000 bc 64 eq 0 507.45 us/op 622.15 us/op 0.82
forkChoice updateHead vc 600000 bc 64 eq 0 3.1091 ms/op 3.3615 ms/op 0.92
forkChoice updateHead vc 1000000 bc 64 eq 0 5.4321 ms/op 5.6283 ms/op 0.97
forkChoice updateHead vc 600000 bc 320 eq 0 3.1454 ms/op 3.2731 ms/op 0.96
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1733 ms/op 3.3991 ms/op 0.93
forkChoice updateHead vc 600000 bc 7200 eq 0 3.9491 ms/op 4.2823 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 1000 11.032 ms/op 11.021 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 10000 11.177 ms/op 11.160 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 300000 19.016 ms/op 20.382 ms/op 0.93
computeDeltas 500000 validators 300 proto nodes 4.1529 ms/op 4.0978 ms/op 1.01
computeDeltas 500000 validators 1200 proto nodes 4.3083 ms/op 4.1914 ms/op 1.03
computeDeltas 500000 validators 7200 proto nodes 4.3598 ms/op 4.1259 ms/op 1.06
computeDeltas 750000 validators 300 proto nodes 6.2349 ms/op 5.9570 ms/op 1.05
computeDeltas 750000 validators 1200 proto nodes 5.8493 ms/op 6.1263 ms/op 0.95
computeDeltas 750000 validators 7200 proto nodes 5.2230 ms/op 5.7326 ms/op 0.91
computeDeltas 1400000 validators 300 proto nodes 9.8246 ms/op 10.506 ms/op 0.94
computeDeltas 1400000 validators 1200 proto nodes 9.8279 ms/op 10.191 ms/op 0.96
computeDeltas 1400000 validators 7200 proto nodes 10.120 ms/op 10.340 ms/op 0.98
computeDeltas 2100000 validators 300 proto nodes 16.082 ms/op 15.366 ms/op 1.05
computeDeltas 2100000 validators 1200 proto nodes 15.330 ms/op 14.947 ms/op 1.03
computeDeltas 2100000 validators 7200 proto nodes 15.230 ms/op 15.087 ms/op 1.01
altair processAttestation - 250000 vs - 7PWei normalcase 2.5789 ms/op 1.8875 ms/op 1.37
altair processAttestation - 250000 vs - 7PWei worstcase 2.8530 ms/op 2.7974 ms/op 1.02
altair processAttestation - setStatus - 1/6 committees join 125.60 us/op 87.679 us/op 1.43
altair processAttestation - setStatus - 1/3 committees join 234.07 us/op 176.39 us/op 1.33
altair processAttestation - setStatus - 1/2 committees join 338.67 us/op 256.33 us/op 1.32
altair processAttestation - setStatus - 2/3 committees join 426.72 us/op 332.91 us/op 1.28
altair processAttestation - setStatus - 4/5 committees join 581.42 us/op 502.73 us/op 1.16
altair processAttestation - setStatus - 100% committees join 724.65 us/op 592.34 us/op 1.22
altair processBlock - 250000 vs - 7PWei normalcase 5.6487 ms/op 4.3194 ms/op 1.31
altair processBlock - 250000 vs - 7PWei normalcase hashState 30.830 ms/op 28.304 ms/op 1.09
altair processBlock - 250000 vs - 7PWei worstcase 39.574 ms/op 39.151 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase hashState 85.131 ms/op 75.918 ms/op 1.12
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9778 ms/op 2.4081 ms/op 0.82
phase0 processBlock - 250000 vs - 7PWei worstcase 23.654 ms/op 26.038 ms/op 0.91
altair processEth1Data - 250000 vs - 7PWei normalcase 312.75 us/op 313.65 us/op 1.00
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.9180 us/op 6.7210 us/op 0.88
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 26.522 us/op 30.206 us/op 0.88
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 11.031 us/op 9.5420 us/op 1.16
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.6900 us/op 7.9160 us/op 1.10
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 144.00 us/op 125.87 us/op 1.14
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.0008 ms/op 823.43 us/op 1.22
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.2576 ms/op 1.1462 ms/op 1.10
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 926.97 us/op 1.6223 ms/op 0.57
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.4444 ms/op 2.6330 ms/op 0.93
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.6804 ms/op 2.0128 ms/op 0.83
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0813 ms/op 3.8846 ms/op 1.05
Tree 40 250000 create 236.26 ms/op 239.07 ms/op 0.99
Tree 40 250000 get(125000) 154.40 ns/op 149.38 ns/op 1.03
Tree 40 250000 set(125000) 711.73 ns/op 664.89 ns/op 1.07
Tree 40 250000 toArray() 18.046 ms/op 17.344 ms/op 1.04
Tree 40 250000 iterate all - toArray() + loop 18.035 ms/op 16.866 ms/op 1.07
Tree 40 250000 iterate all - get(i) 57.929 ms/op 53.996 ms/op 1.07
MutableVector 250000 create 13.745 ms/op 15.287 ms/op 0.90
MutableVector 250000 get(125000) 6.4370 ns/op 6.4500 ns/op 1.00
MutableVector 250000 set(125000) 198.75 ns/op 228.03 ns/op 0.87
MutableVector 250000 toArray() 3.4210 ms/op 4.3813 ms/op 0.78
MutableVector 250000 iterate all - toArray() + loop 3.6074 ms/op 4.5852 ms/op 0.79
MutableVector 250000 iterate all - get(i) 1.7040 ms/op 1.6096 ms/op 1.06
Array 250000 create 3.2503 ms/op 3.7025 ms/op 0.88
Array 250000 clone - spread 1.4403 ms/op 1.4855 ms/op 0.97
Array 250000 get(125000) 0.40900 ns/op 0.42800 ns/op 0.96
Array 250000 set(125000) 0.43200 ns/op 0.44200 ns/op 0.98
Array 250000 iterate all - loop 101.14 us/op 83.342 us/op 1.21
effectiveBalanceIncrements clone Uint8Array 300000 33.353 us/op 33.182 us/op 1.01
effectiveBalanceIncrements clone MutableVector 300000 117.00 ns/op 124.00 ns/op 0.94
effectiveBalanceIncrements rw all Uint8Array 300000 203.98 us/op 199.99 us/op 1.02
effectiveBalanceIncrements rw all MutableVector 300000 67.029 ms/op 69.591 ms/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 89.998 ms/op 92.860 ms/op 0.97
Array.fill - length 1000000 3.6277 ms/op 3.7179 ms/op 0.98
Array push - length 1000000 18.124 ms/op 21.040 ms/op 0.86
Array.get 0.27758 ns/op 0.29835 ns/op 0.93
Uint8Array.get 0.43595 ns/op 0.48772 ns/op 0.89
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.900 ms/op 19.840 ms/op 0.80
altair processEpoch - mainnet_e81889 351.22 ms/op 325.66 ms/op 1.08
mainnet_e81889 - altair beforeProcessEpoch 17.732 ms/op 20.143 ms/op 0.88
mainnet_e81889 - altair processJustificationAndFinalization 14.803 us/op 13.308 us/op 1.11
mainnet_e81889 - altair processInactivityUpdates 5.7887 ms/op 6.0929 ms/op 0.95
mainnet_e81889 - altair processRewardsAndPenalties 55.544 ms/op 53.827 ms/op 1.03
mainnet_e81889 - altair processRegistryUpdates 2.1430 us/op 2.7610 us/op 0.78
mainnet_e81889 - altair processSlashings 451.00 ns/op 644.00 ns/op 0.70
mainnet_e81889 - altair processEth1DataReset 520.00 ns/op 587.00 ns/op 0.89
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.8024 ms/op 2.2169 ms/op 0.81
mainnet_e81889 - altair processSlashingsReset 6.5770 us/op 6.5850 us/op 1.00
mainnet_e81889 - altair processRandaoMixesReset 4.7300 us/op 5.8940 us/op 0.80
mainnet_e81889 - altair processHistoricalRootsUpdate 589.00 ns/op 962.00 ns/op 0.61
mainnet_e81889 - altair processParticipationFlagUpdates 2.6300 us/op 3.5160 us/op 0.75
mainnet_e81889 - altair processSyncCommitteeUpdates 468.00 ns/op 464.00 ns/op 1.01
mainnet_e81889 - altair afterProcessEpoch 95.193 ms/op 100.70 ms/op 0.95
capella processEpoch - mainnet_e217614 1.2079 s/op 1.2872 s/op 0.94
mainnet_e217614 - capella beforeProcessEpoch 69.269 ms/op 68.186 ms/op 1.02
mainnet_e217614 - capella processJustificationAndFinalization 15.730 us/op 22.074 us/op 0.71
mainnet_e217614 - capella processInactivityUpdates 18.719 ms/op 17.252 ms/op 1.09
mainnet_e217614 - capella processRewardsAndPenalties 250.34 ms/op 286.88 ms/op 0.87
mainnet_e217614 - capella processRegistryUpdates 19.283 us/op 12.390 us/op 1.56
mainnet_e217614 - capella processSlashings 418.00 ns/op 628.00 ns/op 0.67
mainnet_e217614 - capella processEth1DataReset 588.00 ns/op 524.00 ns/op 1.12
mainnet_e217614 - capella processEffectiveBalanceUpdates 14.854 ms/op 12.652 ms/op 1.17
mainnet_e217614 - capella processSlashingsReset 2.8790 us/op 4.0690 us/op 0.71
mainnet_e217614 - capella processRandaoMixesReset 7.7200 us/op 10.225 us/op 0.76
mainnet_e217614 - capella processHistoricalRootsUpdate 774.00 ns/op 555.00 ns/op 1.39
mainnet_e217614 - capella processParticipationFlagUpdates 4.0240 us/op 2.8880 us/op 1.39
mainnet_e217614 - capella afterProcessEpoch 265.24 ms/op 246.00 ms/op 1.08
phase0 processEpoch - mainnet_e58758 485.23 ms/op 482.71 ms/op 1.01
mainnet_e58758 - phase0 beforeProcessEpoch 114.16 ms/op 86.029 ms/op 1.33
mainnet_e58758 - phase0 processJustificationAndFinalization 23.532 us/op 15.912 us/op 1.48
mainnet_e58758 - phase0 processRewardsAndPenalties 43.669 ms/op 32.980 ms/op 1.32
mainnet_e58758 - phase0 processRegistryUpdates 9.9900 us/op 11.125 us/op 0.90
mainnet_e58758 - phase0 processSlashings 966.00 ns/op 446.00 ns/op 2.17
mainnet_e58758 - phase0 processEth1DataReset 554.00 ns/op 491.00 ns/op 1.13
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 4.8257 ms/op 2.7023 ms/op 1.79
mainnet_e58758 - phase0 processSlashingsReset 4.1470 us/op 5.7470 us/op 0.72
mainnet_e58758 - phase0 processRandaoMixesReset 4.7960 us/op 4.1180 us/op 1.16
mainnet_e58758 - phase0 processHistoricalRootsUpdate 901.00 ns/op 557.00 ns/op 1.62
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.1200 us/op 3.7180 us/op 1.38
mainnet_e58758 - phase0 afterProcessEpoch 89.582 ms/op 84.206 ms/op 1.06
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.2368 ms/op 1.4885 ms/op 1.50
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.2147 ms/op 2.0102 ms/op 1.10
altair processInactivityUpdates - 250000 normalcase 22.385 ms/op 18.547 ms/op 1.21
altair processInactivityUpdates - 250000 worstcase 20.938 ms/op 23.351 ms/op 0.90
phase0 processRegistryUpdates - 250000 normalcase 8.7520 us/op 9.4760 us/op 0.92
phase0 processRegistryUpdates - 250000 badcase_full_deposits 372.45 us/op 336.17 us/op 1.11
phase0 processRegistryUpdates - 250000 worstcase 0.5 149.35 ms/op 130.98 ms/op 1.14
altair processRewardsAndPenalties - 250000 normalcase 46.718 ms/op 52.914 ms/op 0.88
altair processRewardsAndPenalties - 250000 worstcase 49.823 ms/op 40.899 ms/op 1.22
phase0 getAttestationDeltas - 250000 normalcase 12.429 ms/op 8.0256 ms/op 1.55
phase0 getAttestationDeltas - 250000 worstcase 8.9977 ms/op 8.3310 ms/op 1.08
phase0 processSlashings - 250000 worstcase 123.16 us/op 104.03 us/op 1.18
altair processSyncCommitteeUpdates - 250000 126.58 ms/op 129.35 ms/op 0.98
BeaconState.hashTreeRoot - No change 280.00 ns/op 305.00 ns/op 0.92
BeaconState.hashTreeRoot - 1 full validator 129.95 us/op 115.99 us/op 1.12
BeaconState.hashTreeRoot - 32 full validator 1.0895 ms/op 1.0177 ms/op 1.07
BeaconState.hashTreeRoot - 512 full validator 11.727 ms/op 12.203 ms/op 0.96
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 146.98 us/op 119.17 us/op 1.23
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.9470 ms/op 1.6358 ms/op 1.19
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 33.656 ms/op 21.143 ms/op 1.59
BeaconState.hashTreeRoot - 1 balances 114.05 us/op 84.712 us/op 1.35
BeaconState.hashTreeRoot - 32 balances 1.0731 ms/op 810.54 us/op 1.32
BeaconState.hashTreeRoot - 512 balances 9.9043 ms/op 9.5706 ms/op 1.03
BeaconState.hashTreeRoot - 250000 balances 161.60 ms/op 186.49 ms/op 0.87
aggregationBits - 2048 els - zipIndexesInBitList 23.509 us/op 26.683 us/op 0.88
byteArrayEquals 32 53.231 ns/op 54.806 ns/op 0.97
Buffer.compare 32 17.327 ns/op 17.653 ns/op 0.98
byteArrayEquals 1024 1.5897 us/op 1.6111 us/op 0.99
Buffer.compare 1024 25.036 ns/op 25.894 ns/op 0.97
byteArrayEquals 16384 25.245 us/op 25.462 us/op 0.99
Buffer.compare 16384 183.06 ns/op 203.46 ns/op 0.90
byteArrayEquals 123687377 190.45 ms/op 193.89 ms/op 0.98
Buffer.compare 123687377 6.0900 ms/op 7.6893 ms/op 0.79
byteArrayEquals 32 - diff last byte 52.010 ns/op 53.606 ns/op 0.97
Buffer.compare 32 - diff last byte 17.225 ns/op 17.886 ns/op 0.96
byteArrayEquals 1024 - diff last byte 1.5653 us/op 1.6136 us/op 0.97
Buffer.compare 1024 - diff last byte 24.931 ns/op 25.633 ns/op 0.97
byteArrayEquals 16384 - diff last byte 24.949 us/op 25.726 us/op 0.97
Buffer.compare 16384 - diff last byte 174.27 ns/op 207.79 ns/op 0.84
byteArrayEquals 123687377 - diff last byte 192.64 ms/op 194.11 ms/op 0.99
Buffer.compare 123687377 - diff last byte 6.4226 ms/op 7.1201 ms/op 0.90
byteArrayEquals 32 - random bytes 5.1990 ns/op 5.0070 ns/op 1.04
Buffer.compare 32 - random bytes 17.562 ns/op 17.767 ns/op 0.99
byteArrayEquals 1024 - random bytes 5.2120 ns/op 5.3410 ns/op 0.98
Buffer.compare 1024 - random bytes 17.506 ns/op 17.414 ns/op 1.01
byteArrayEquals 16384 - random bytes 5.1580 ns/op 5.1760 ns/op 1.00
Buffer.compare 16384 - random bytes 17.484 ns/op 17.687 ns/op 0.99
byteArrayEquals 123687377 - random bytes 6.4600 ns/op 6.4500 ns/op 1.00
Buffer.compare 123687377 - random bytes 18.880 ns/op 19.810 ns/op 0.95
regular array get 100000 times 43.195 us/op 36.111 us/op 1.20
wrappedArray get 100000 times 33.641 us/op 36.275 us/op 0.93
arrayWithProxy get 100000 times 14.165 ms/op 12.663 ms/op 1.12
ssz.Root.equals 46.516 ns/op 45.676 ns/op 1.02
byteArrayEquals 46.083 ns/op 45.051 ns/op 1.02
Buffer.compare 10.568 ns/op 10.474 ns/op 1.01
shuffle list - 16384 els 6.2722 ms/op 6.0287 ms/op 1.04
shuffle list - 250000 els 92.453 ms/op 89.986 ms/op 1.03
processSlot - 1 slots 10.711 us/op 15.855 us/op 0.68
processSlot - 32 slots 2.6744 ms/op 2.7584 ms/op 0.97
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 40.849 ms/op 39.095 ms/op 1.04
getCommitteeAssignments - req 1 vs - 250000 vc 2.1602 ms/op 2.2231 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 4.1500 ms/op 4.2812 ms/op 0.97
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4150 ms/op 4.5973 ms/op 0.96
findModifiedValidators - 10000 modified validators 232.70 ms/op 272.35 ms/op 0.85
findModifiedValidators - 1000 modified validators 162.14 ms/op 165.35 ms/op 0.98
findModifiedValidators - 100 modified validators 144.62 ms/op 151.75 ms/op 0.95
findModifiedValidators - 10 modified validators 142.25 ms/op 169.82 ms/op 0.84
findModifiedValidators - 1 modified validators 159.82 ms/op 182.02 ms/op 0.88
findModifiedValidators - no difference 159.88 ms/op 164.55 ms/op 0.97
compare ViewDUs 3.2158 s/op 3.5140 s/op 0.92
compare each validator Uint8Array 1.9303 s/op 1.5394 s/op 1.25
compare ViewDU to Uint8Array 1.0305 s/op 1.2979 s/op 0.79
migrate state 1000000 validators, 24 modified, 0 new 557.64 ms/op 694.73 ms/op 0.80
migrate state 1000000 validators, 1700 modified, 1000 new 872.45 ms/op 889.04 ms/op 0.98
migrate state 1000000 validators, 3400 modified, 2000 new 1.0308 s/op 1.0291 s/op 1.00
migrate state 1500000 validators, 24 modified, 0 new 605.81 ms/op 627.52 ms/op 0.97
migrate state 1500000 validators, 1700 modified, 1000 new 901.69 ms/op 865.99 ms/op 1.04
migrate state 1500000 validators, 3400 modified, 2000 new 1.1466 s/op 1.0082 s/op 1.14
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.1900 ns/op 4.1400 ns/op 1.25
state getBlockRootAtSlot - 250000 vs - 7PWei 809.27 ns/op 846.40 ns/op 0.96
computeProposers - vc 250000 10.602 ms/op 8.4841 ms/op 1.25
computeEpochShuffling - vc 250000 100.93 ms/op 85.419 ms/op 1.18
getNextSyncCommittee - vc 250000 164.83 ms/op 124.70 ms/op 1.32
computeSigningRoot for AttestationData 21.631 us/op 22.250 us/op 0.97
hash AttestationData serialized data then Buffer.toString(base64) 1.6390 us/op 1.5083 us/op 1.09
toHexString serialized data 1.1335 us/op 840.49 ns/op 1.35
Buffer.toString(base64) 250.44 ns/op 181.82 ns/op 1.38

by benchmarkbot/action

Copy link
Contributor

@ensi321 ensi321 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@wemeetagain wemeetagain merged commit 64fe1db into unstable Aug 9, 2024
18 of 20 checks passed
@wemeetagain wemeetagain deleted the te/sync_pubkeys branch August 9, 2024 14:19
philknows pushed a commit that referenced this pull request Sep 3, 2024
* fix: improve sync pubkeys

* fix: lint
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.22.0 🎉

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

Successfully merging this pull request may close these issues.

3 participants