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: ensure loaded state is typed as Uint8Array #7488

Open
wants to merge 1 commit into
base: unstable
Choose a base branch
from

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Feb 22, 2025

Motivation

This is related to

and adds a additional safety measure to avoid issues related to Buffer, specifically we wanna avoid unexpected behavior such as Buffer.prototype.slice not copying memory.

Description

This changes ensures loaded state is typeof Uint8Array by converting loaded bytes. This operation is pretty much free based on benchmarks in #6688 as it does not copy the underlying memory, just updates the view.

Buffer utils
✔ Buffer.from - copy                  7.286412 ops/s    137.2418 ms/op   x1.024         38 runs   5.82 s
✔ Buffer.from - no copy                1117318 ops/s    895.0000 ns/op   x0.982     723013 runs   1.11 s
✔ Buffer.from - no copy with offset    1179245 ops/s    848.0000 ns/op        -    2699558 runs   3.85 s

@nflaig nflaig requested a review from a team as a code owner February 22, 2025 10:04
@nflaig nflaig changed the title fix: ensure load state is typeof Uint8Array fix: ensure loaded state is typed as Uint8Array Feb 22, 2025
Copy link

codecov bot commented Feb 22, 2025

Codecov Report

Attention: Patch coverage is 0% with 4 lines in your changes missing coverage. Please review.

Project coverage is 50.47%. Comparing base (9a2cf74) to head (33c14dc).

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7488      +/-   ##
============================================
+ Coverage     50.46%   50.47%   +0.01%     
============================================
  Files           603      603              
  Lines         40655    40657       +2     
  Branches       2226     2231       +5     
============================================
+ Hits          20517    20523       +6     
+ Misses        20098    20094       -4     
  Partials         40       40              

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: a6b6394 Previous: 9a2cf74 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 963.25 us/op 925.72 us/op 1.04
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 35.131 us/op 34.695 us/op 1.01
BLS verify - blst 1.2635 ms/op 749.68 us/op 1.69
BLS verifyMultipleSignatures 3 - blst 1.3032 ms/op 1.1637 ms/op 1.12
BLS verifyMultipleSignatures 8 - blst 1.8924 ms/op 1.6132 ms/op 1.17
BLS verifyMultipleSignatures 32 - blst 5.6972 ms/op 4.7885 ms/op 1.19
BLS verifyMultipleSignatures 64 - blst 10.710 ms/op 8.8730 ms/op 1.21
BLS verifyMultipleSignatures 128 - blst 17.428 ms/op 16.961 ms/op 1.03
BLS deserializing 10000 signatures 691.47 ms/op 673.73 ms/op 1.03
BLS deserializing 100000 signatures 7.0181 s/op 6.8202 s/op 1.03
BLS verifyMultipleSignatures - same message - 3 - blst 995.89 us/op 850.90 us/op 1.17
BLS verifyMultipleSignatures - same message - 8 - blst 1.0781 ms/op 1.0052 ms/op 1.07
BLS verifyMultipleSignatures - same message - 32 - blst 1.6930 ms/op 1.7118 ms/op 0.99
BLS verifyMultipleSignatures - same message - 64 - blst 2.5961 ms/op 2.5809 ms/op 1.01
BLS verifyMultipleSignatures - same message - 128 - blst 4.4275 ms/op 4.3384 ms/op 1.02
BLS aggregatePubkeys 32 - blst 19.804 us/op 19.505 us/op 1.02
BLS aggregatePubkeys 128 - blst 71.959 us/op 69.940 us/op 1.03
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 58.540 ms/op 49.242 ms/op 1.19
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 59.815 ms/op 42.938 ms/op 1.39
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 45.583 ms/op 38.663 ms/op 1.18
getSlashingsAndExits - default max 74.144 us/op 75.387 us/op 0.98
getSlashingsAndExits - 2k 363.66 us/op 321.50 us/op 1.13
proposeBlockBody type=full, size=empty 4.9568 ms/op 5.5446 ms/op 0.89
isKnown best case - 1 super set check 200.00 ns/op 205.00 ns/op 0.98
isKnown normal case - 2 super set checks 198.00 ns/op 204.00 ns/op 0.97
isKnown worse case - 16 super set checks 193.00 ns/op 203.00 ns/op 0.95
InMemoryCheckpointStateCache - add get delete 2.3880 us/op 2.3820 us/op 1.00
validate api signedAggregateAndProof - struct 1.8896 ms/op 1.4513 ms/op 1.30
validate gossip signedAggregateAndProof - struct 1.5831 ms/op 1.4604 ms/op 1.08
batch validate gossip attestation - vc 640000 - chunk 32 127.59 us/op 124.80 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 64 105.23 us/op 104.63 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 128 111.58 us/op 103.52 us/op 1.08
batch validate gossip attestation - vc 640000 - chunk 256 110.90 us/op 109.88 us/op 1.01
pickEth1Vote - no votes 965.69 us/op 1.0337 ms/op 0.93
pickEth1Vote - max votes 6.2487 ms/op 7.9449 ms/op 0.79
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.192 ms/op 17.955 ms/op 0.68
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.982 ms/op 26.050 ms/op 0.81
pickEth1Vote - Eth1Data fastSerialize value x2048 415.67 us/op 450.11 us/op 0.92
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.5251 ms/op 2.3272 ms/op 1.94
bytes32 toHexString 401.00 ns/op 377.00 ns/op 1.06
bytes32 Buffer.toString(hex) 239.00 ns/op 247.00 ns/op 0.97
bytes32 Buffer.toString(hex) from Uint8Array 365.00 ns/op 340.00 ns/op 1.07
bytes32 Buffer.toString(hex) + 0x 263.00 ns/op 249.00 ns/op 1.06
Object access 1 prop 0.13000 ns/op 0.11700 ns/op 1.11
Map access 1 prop 0.12300 ns/op 0.12500 ns/op 0.98
Object get x1000 6.3360 ns/op 6.1040 ns/op 1.04
Map get x1000 6.5060 ns/op 6.5390 ns/op 0.99
Object set x1000 31.030 ns/op 30.626 ns/op 1.01
Map set x1000 23.599 ns/op 21.267 ns/op 1.11
Return object 10000 times 0.31070 ns/op 0.29980 ns/op 1.04
Throw Error 10000 times 4.7291 us/op 4.5571 us/op 1.04
toHex 130.53 ns/op 146.19 ns/op 0.89
Buffer.from 128.23 ns/op 126.38 ns/op 1.01
shared Buffer 85.489 ns/op 80.907 ns/op 1.06
fastMsgIdFn sha256 / 200 bytes 2.1910 us/op 2.2550 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 304.00 ns/op 211.00 ns/op 1.44
fastMsgIdFn h64 xxhash / 200 bytes 273.00 ns/op 276.00 ns/op 0.99
fastMsgIdFn sha256 / 1000 bytes 7.4930 us/op 7.5110 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 335.00 ns/op 343.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 1000 bytes 343.00 ns/op 354.00 ns/op 0.97
fastMsgIdFn sha256 / 10000 bytes 65.221 us/op 66.661 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.8510 us/op 1.9010 us/op 0.97
fastMsgIdFn h64 xxhash / 10000 bytes 1.2270 us/op 1.2730 us/op 0.96
send data - 1000 256B messages 11.908 ms/op 16.784 ms/op 0.71
send data - 1000 512B messages 16.296 ms/op 20.321 ms/op 0.80
send data - 1000 1024B messages 26.806 ms/op 26.077 ms/op 1.03
send data - 1000 1200B messages 22.013 ms/op 26.366 ms/op 0.83
send data - 1000 2048B messages 27.365 ms/op 24.613 ms/op 1.11
send data - 1000 4096B messages 27.182 ms/op 27.552 ms/op 0.99
send data - 1000 16384B messages 64.334 ms/op 75.955 ms/op 0.85
send data - 1000 65536B messages 268.53 ms/op 233.34 ms/op 1.15
enrSubnets - fastDeserialize 64 bits 879.00 ns/op 1.8480 us/op 0.48
enrSubnets - ssz BitVector 64 bits 326.00 ns/op 343.00 ns/op 0.95
enrSubnets - fastDeserialize 4 bits 128.00 ns/op 137.00 ns/op 0.93
enrSubnets - ssz BitVector 4 bits 340.00 ns/op 337.00 ns/op 1.01
prioritizePeers score -10:0 att 32-0.1 sync 2-0 158.67 us/op 123.58 us/op 1.28
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 212.00 us/op 144.37 us/op 1.47
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 305.53 us/op 209.59 us/op 1.46
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 794.40 us/op 393.64 us/op 2.02
prioritizePeers score 0:0 att 64-1 sync 4-1 839.77 us/op 486.63 us/op 1.73
array of 16000 items push then shift 1.7384 us/op 1.6951 us/op 1.03
LinkedList of 16000 items push then shift 11.731 ns/op 7.7590 ns/op 1.51
array of 16000 items push then pop 95.261 ns/op 81.362 ns/op 1.17
LinkedList of 16000 items push then pop 8.8980 ns/op 7.5830 ns/op 1.17
array of 24000 items push then shift 2.8559 us/op 2.5206 us/op 1.13
LinkedList of 24000 items push then shift 11.684 ns/op 7.6380 ns/op 1.53
array of 24000 items push then pop 144.44 ns/op 114.48 ns/op 1.26
LinkedList of 24000 items push then pop 10.557 ns/op 7.6170 ns/op 1.39
intersect bitArray bitLen 8 8.2630 ns/op 6.7850 ns/op 1.22
intersect array and set length 8 47.886 ns/op 40.736 ns/op 1.18
intersect bitArray bitLen 128 38.530 ns/op 31.158 ns/op 1.24
intersect array and set length 128 803.68 ns/op 647.49 ns/op 1.24
bitArray.getTrueBitIndexes() bitLen 128 1.5220 us/op 1.0750 us/op 1.42
bitArray.getTrueBitIndexes() bitLen 248 2.9010 us/op 1.8970 us/op 1.53
bitArray.getTrueBitIndexes() bitLen 512 5.4800 us/op 3.8490 us/op 1.42
Buffer.concat 32 items 879.00 ns/op 628.00 ns/op 1.40
Uint8Array.set 32 items 1.5610 us/op 1.5760 us/op 0.99
Buffer.copy 2.7310 us/op 3.0280 us/op 0.90
Uint8Array.set - with subarray 2.3730 us/op 3.0440 us/op 0.78
Uint8Array.set - without subarray 1.5030 us/op 1.7310 us/op 0.87
getUint32 - dataview 218.00 ns/op 201.00 ns/op 1.08
getUint32 - manual 127.00 ns/op 134.00 ns/op 0.95
Set add up to 64 items then delete first 2.6355 us/op 3.1167 us/op 0.85
OrderedSet add up to 64 items then delete first 4.8368 us/op 4.0225 us/op 1.20
Set add up to 64 items then delete last 2.7351 us/op 2.4961 us/op 1.10
OrderedSet add up to 64 items then delete last 3.9762 us/op 5.0082 us/op 0.79
Set add up to 64 items then delete middle 2.6081 us/op 3.5434 us/op 0.74
OrderedSet add up to 64 items then delete middle 5.7244 us/op 7.6627 us/op 0.75
Set add up to 128 items then delete first 5.2071 us/op 6.7765 us/op 0.77
OrderedSet add up to 128 items then delete first 8.0747 us/op 10.944 us/op 0.74
Set add up to 128 items then delete last 5.1582 us/op 6.3930 us/op 0.81
OrderedSet add up to 128 items then delete last 7.5571 us/op 10.212 us/op 0.74
Set add up to 128 items then delete middle 5.0098 us/op 6.0452 us/op 0.83
OrderedSet add up to 128 items then delete middle 13.914 us/op 17.105 us/op 0.81
Set add up to 256 items then delete first 11.098 us/op 13.050 us/op 0.85
OrderedSet add up to 256 items then delete first 16.550 us/op 19.548 us/op 0.85
Set add up to 256 items then delete last 10.081 us/op 12.254 us/op 0.82
OrderedSet add up to 256 items then delete last 15.630 us/op 15.645 us/op 1.00
Set add up to 256 items then delete middle 10.105 us/op 9.9863 us/op 1.01
OrderedSet add up to 256 items then delete middle 42.002 us/op 44.915 us/op 0.94
transfer serialized Status (84 B) 2.3310 us/op 2.4910 us/op 0.94
copy serialized Status (84 B) 1.1680 us/op 1.9110 us/op 0.61
transfer serialized SignedVoluntaryExit (112 B) 2.2500 us/op 2.7230 us/op 0.83
copy serialized SignedVoluntaryExit (112 B) 1.5700 us/op 1.7740 us/op 0.89
transfer serialized ProposerSlashing (416 B) 2.3240 us/op 2.7240 us/op 0.85
copy serialized ProposerSlashing (416 B) 1.5740 us/op 2.1550 us/op 0.73
transfer serialized Attestation (485 B) 2.9370 us/op 2.7220 us/op 1.08
copy serialized Attestation (485 B) 1.2690 us/op 2.1200 us/op 0.60
transfer serialized AttesterSlashing (33232 B) 2.8570 us/op 2.9580 us/op 0.97
copy serialized AttesterSlashing (33232 B) 4.4590 us/op 5.4440 us/op 0.82
transfer serialized Small SignedBeaconBlock (128000 B) 3.3140 us/op 3.7990 us/op 0.87
copy serialized Small SignedBeaconBlock (128000 B) 9.5900 us/op 16.285 us/op 0.59
transfer serialized Avg SignedBeaconBlock (200000 B) 4.1860 us/op 5.2970 us/op 0.79
copy serialized Avg SignedBeaconBlock (200000 B) 13.608 us/op 25.629 us/op 0.53
transfer serialized BlobsSidecar (524380 B) 3.5200 us/op 8.3130 us/op 0.42
copy serialized BlobsSidecar (524380 B) 197.02 us/op 111.28 us/op 1.77
transfer serialized Big SignedBeaconBlock (1000000 B) 3.8660 us/op 5.4360 us/op 0.71
copy serialized Big SignedBeaconBlock (1000000 B) 112.33 us/op 351.29 us/op 0.32
pass gossip attestations to forkchoice per slot 2.8143 ms/op 3.0682 ms/op 0.92
forkChoice updateHead vc 100000 bc 64 eq 0 457.65 us/op 503.12 us/op 0.91
forkChoice updateHead vc 600000 bc 64 eq 0 2.8365 ms/op 3.5423 ms/op 0.80
forkChoice updateHead vc 1000000 bc 64 eq 0 4.8440 ms/op 6.4697 ms/op 0.75
forkChoice updateHead vc 600000 bc 320 eq 0 2.8308 ms/op 3.6728 ms/op 0.77
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8859 ms/op 3.9141 ms/op 0.74
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1734 ms/op 5.3985 ms/op 0.59
forkChoice updateHead vc 600000 bc 64 eq 1000 10.568 ms/op 12.369 ms/op 0.85
forkChoice updateHead vc 600000 bc 64 eq 10000 10.481 ms/op 11.660 ms/op 0.90
forkChoice updateHead vc 600000 bc 64 eq 300000 13.621 ms/op 16.705 ms/op 0.82
computeDeltas 500000 validators 300 proto nodes 3.9261 ms/op 4.4631 ms/op 0.88
computeDeltas 500000 validators 1200 proto nodes 3.8216 ms/op 4.6766 ms/op 0.82
computeDeltas 500000 validators 7200 proto nodes 3.7429 ms/op 4.7655 ms/op 0.79
computeDeltas 750000 validators 300 proto nodes 5.6319 ms/op 6.9497 ms/op 0.81
computeDeltas 750000 validators 1200 proto nodes 5.6693 ms/op 6.3368 ms/op 0.89
computeDeltas 750000 validators 7200 proto nodes 5.6477 ms/op 6.3670 ms/op 0.89
computeDeltas 1400000 validators 300 proto nodes 10.571 ms/op 11.812 ms/op 0.89
computeDeltas 1400000 validators 1200 proto nodes 10.482 ms/op 11.852 ms/op 0.88
computeDeltas 1400000 validators 7200 proto nodes 10.524 ms/op 11.697 ms/op 0.90
computeDeltas 2100000 validators 300 proto nodes 16.643 ms/op 17.603 ms/op 0.95
computeDeltas 2100000 validators 1200 proto nodes 16.377 ms/op 17.491 ms/op 0.94
computeDeltas 2100000 validators 7200 proto nodes 16.406 ms/op 16.999 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 1.9741 ms/op 2.4553 ms/op 0.80
altair processAttestation - 250000 vs - 7PWei worstcase 2.8714 ms/op 3.1901 ms/op 0.90
altair processAttestation - setStatus - 1/6 committees join 118.83 us/op 132.41 us/op 0.90
altair processAttestation - setStatus - 1/3 committees join 229.46 us/op 253.80 us/op 0.90
altair processAttestation - setStatus - 1/2 committees join 318.39 us/op 347.99 us/op 0.91
altair processAttestation - setStatus - 2/3 committees join 427.37 us/op 439.04 us/op 0.97
altair processAttestation - setStatus - 4/5 committees join 568.06 us/op 619.17 us/op 0.92
altair processAttestation - setStatus - 100% committees join 694.08 us/op 712.99 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 6.6340 ms/op 4.9406 ms/op 1.34
altair processBlock - 250000 vs - 7PWei normalcase hashState 36.018 ms/op 35.317 ms/op 1.02
altair processBlock - 250000 vs - 7PWei worstcase 49.546 ms/op 37.151 ms/op 1.33
altair processBlock - 250000 vs - 7PWei worstcase hashState 121.15 ms/op 86.071 ms/op 1.41
phase0 processBlock - 250000 vs - 7PWei normalcase 2.2851 ms/op 1.7014 ms/op 1.34
phase0 processBlock - 250000 vs - 7PWei worstcase 29.444 ms/op 21.839 ms/op 1.35
altair processEth1Data - 250000 vs - 7PWei normalcase 341.24 us/op 354.51 us/op 0.96
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.1040 us/op 4.6030 us/op 1.54
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 40.935 us/op 28.412 us/op 1.44
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.219 us/op 8.0410 us/op 1.52
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.5960 us/op 4.7570 us/op 1.60
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 159.31 us/op 132.27 us/op 1.20
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.8172 ms/op 995.35 us/op 1.83
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7201 ms/op 1.4416 ms/op 1.19
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4818 ms/op 1.4251 ms/op 1.74
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.2545 ms/op 3.1671 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.5558 ms/op 1.4489 ms/op 1.76
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.3548 ms/op 3.3594 ms/op 1.00
Tree 40 250000 create 415.69 ms/op 408.06 ms/op 1.02
Tree 40 250000 get(125000) 142.76 ns/op 143.50 ns/op 0.99
Tree 40 250000 set(125000) 1.4594 us/op 1.4337 us/op 1.02
Tree 40 250000 toArray() 15.499 ms/op 15.808 ms/op 0.98
Tree 40 250000 iterate all - toArray() + loop 15.332 ms/op 15.377 ms/op 1.00
Tree 40 250000 iterate all - get(i) 50.847 ms/op 51.172 ms/op 0.99
Array 250000 create 2.8088 ms/op 2.3844 ms/op 1.18
Array 250000 clone - spread 810.45 us/op 1.3714 ms/op 0.59
Array 250000 get(125000) 0.57400 ns/op 0.41400 ns/op 1.39
Array 250000 set(125000) 0.41200 ns/op 0.43700 ns/op 0.94
Array 250000 iterate all - loop 106.44 us/op 94.001 us/op 1.13
phase0 afterProcessEpoch - 250000 vs - 7PWei 48.183 ms/op 48.012 ms/op 1.00
Array.fill - length 1000000 3.2922 ms/op 3.3625 ms/op 0.98
Array push - length 1000000 12.745 ms/op 12.898 ms/op 0.99
Array.get 0.26938 ns/op 0.27386 ns/op 0.98
Uint8Array.get 0.43588 ns/op 0.43881 ns/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.033 ms/op 16.447 ms/op 0.91
altair processEpoch - mainnet_e81889 313.78 ms/op 262.62 ms/op 1.19
mainnet_e81889 - altair beforeProcessEpoch 19.580 ms/op 18.771 ms/op 1.04
mainnet_e81889 - altair processJustificationAndFinalization 7.2480 us/op 5.3620 us/op 1.35
mainnet_e81889 - altair processInactivityUpdates 3.8961 ms/op 4.0322 ms/op 0.97
mainnet_e81889 - altair processRewardsAndPenalties 56.066 ms/op 38.865 ms/op 1.44
mainnet_e81889 - altair processRegistryUpdates 684.00 ns/op 705.00 ns/op 0.97
mainnet_e81889 - altair processSlashings 183.00 ns/op 170.00 ns/op 1.08
mainnet_e81889 - altair processEth1DataReset 175.00 ns/op 166.00 ns/op 1.05
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2310 ms/op 1.2631 ms/op 0.97
mainnet_e81889 - altair processSlashingsReset 1.6090 us/op 863.00 ns/op 1.86
mainnet_e81889 - altair processRandaoMixesReset 1.4480 us/op 1.1010 us/op 1.32
mainnet_e81889 - altair processHistoricalRootsUpdate 173.00 ns/op 171.00 ns/op 1.01
mainnet_e81889 - altair processParticipationFlagUpdates 507.00 ns/op 510.00 ns/op 0.99
mainnet_e81889 - altair processSyncCommitteeUpdates 136.00 ns/op 137.00 ns/op 0.99
mainnet_e81889 - altair afterProcessEpoch 49.828 ms/op 51.283 ms/op 0.97
capella processEpoch - mainnet_e217614 1.0183 s/op 817.77 ms/op 1.25
mainnet_e217614 - capella beforeProcessEpoch 67.391 ms/op 62.369 ms/op 1.08
mainnet_e217614 - capella processJustificationAndFinalization 5.2710 us/op 5.1930 us/op 1.02
mainnet_e217614 - capella processInactivityUpdates 14.837 ms/op 15.933 ms/op 0.93
mainnet_e217614 - capella processRewardsAndPenalties 222.68 ms/op 171.55 ms/op 1.30
mainnet_e217614 - capella processRegistryUpdates 6.3140 us/op 6.4030 us/op 0.99
mainnet_e217614 - capella processSlashings 177.00 ns/op 168.00 ns/op 1.05
mainnet_e217614 - capella processEth1DataReset 179.00 ns/op 164.00 ns/op 1.09
mainnet_e217614 - capella processEffectiveBalanceUpdates 10.128 ms/op 10.307 ms/op 0.98
mainnet_e217614 - capella processSlashingsReset 1.0290 us/op 846.00 ns/op 1.22
mainnet_e217614 - capella processRandaoMixesReset 1.2960 us/op 1.1500 us/op 1.13
mainnet_e217614 - capella processHistoricalRootsUpdate 181.00 ns/op 171.00 ns/op 1.06
mainnet_e217614 - capella processParticipationFlagUpdates 525.00 ns/op 513.00 ns/op 1.02
mainnet_e217614 - capella afterProcessEpoch 123.77 ms/op 127.50 ms/op 0.97
phase0 processEpoch - mainnet_e58758 348.89 ms/op 256.26 ms/op 1.36
mainnet_e58758 - phase0 beforeProcessEpoch 89.466 ms/op 72.681 ms/op 1.23
mainnet_e58758 - phase0 processJustificationAndFinalization 5.3690 us/op 5.5560 us/op 0.97
mainnet_e58758 - phase0 processRewardsAndPenalties 44.155 ms/op 36.855 ms/op 1.20
mainnet_e58758 - phase0 processRegistryUpdates 3.1110 us/op 3.0510 us/op 1.02
mainnet_e58758 - phase0 processSlashings 182.00 ns/op 172.00 ns/op 1.06
mainnet_e58758 - phase0 processEth1DataReset 193.00 ns/op 172.00 ns/op 1.12
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0052 ms/op 1.0394 ms/op 0.97
mainnet_e58758 - phase0 processSlashingsReset 887.00 ns/op 884.00 ns/op 1.00
mainnet_e58758 - phase0 processRandaoMixesReset 1.3500 us/op 1.2010 us/op 1.12
mainnet_e58758 - phase0 processHistoricalRootsUpdate 171.00 ns/op 173.00 ns/op 0.99
mainnet_e58758 - phase0 processParticipationRecordUpdates 837.00 ns/op 894.00 ns/op 0.94
mainnet_e58758 - phase0 afterProcessEpoch 40.861 ms/op 41.476 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.4311 ms/op 1.2939 ms/op 1.88
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.8660 ms/op 2.0221 ms/op 0.92
altair processInactivityUpdates - 250000 normalcase 20.257 ms/op 16.707 ms/op 1.21
altair processInactivityUpdates - 250000 worstcase 19.966 ms/op 16.753 ms/op 1.19
phase0 processRegistryUpdates - 250000 normalcase 8.4550 us/op 6.0300 us/op 1.40
phase0 processRegistryUpdates - 250000 badcase_full_deposits 436.23 us/op 257.72 us/op 1.69
phase0 processRegistryUpdates - 250000 worstcase 0.5 120.77 ms/op 106.84 ms/op 1.13
altair processRewardsAndPenalties - 250000 normalcase 55.545 ms/op 35.019 ms/op 1.59
altair processRewardsAndPenalties - 250000 worstcase 44.498 ms/op 32.717 ms/op 1.36
phase0 getAttestationDeltas - 250000 normalcase 6.4276 ms/op 7.7474 ms/op 0.83
phase0 getAttestationDeltas - 250000 worstcase 5.7944 ms/op 13.265 ms/op 0.44
phase0 processSlashings - 250000 worstcase 125.83 us/op 83.389 us/op 1.51
altair processSyncCommitteeUpdates - 250000 124.37 ms/op 119.79 ms/op 1.04
BeaconState.hashTreeRoot - No change 216.00 ns/op 213.00 ns/op 1.01
BeaconState.hashTreeRoot - 1 full validator 107.59 us/op 74.735 us/op 1.44
BeaconState.hashTreeRoot - 32 full validator 1.0048 ms/op 799.54 us/op 1.26
BeaconState.hashTreeRoot - 512 full validator 11.749 ms/op 9.0875 ms/op 1.29
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 140.10 us/op 90.990 us/op 1.54
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3999 ms/op 1.3940 ms/op 1.00
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 28.927 ms/op 19.477 ms/op 1.49
BeaconState.hashTreeRoot - 1 balances 115.17 us/op 73.198 us/op 1.57
BeaconState.hashTreeRoot - 32 balances 854.29 us/op 864.14 us/op 0.99
BeaconState.hashTreeRoot - 512 balances 9.7131 ms/op 7.5636 ms/op 1.28
BeaconState.hashTreeRoot - 250000 balances 179.60 ms/op 158.28 ms/op 1.13
aggregationBits - 2048 els - zipIndexesInBitList 21.176 us/op 21.107 us/op 1.00
byteArrayEquals 32 53.192 ns/op 53.146 ns/op 1.00
Buffer.compare 32 16.973 ns/op 17.219 ns/op 0.99
byteArrayEquals 1024 1.5752 us/op 1.5798 us/op 1.00
Buffer.compare 1024 25.431 ns/op 24.910 ns/op 1.02
byteArrayEquals 16384 25.075 us/op 25.150 us/op 1.00
Buffer.compare 16384 188.16 ns/op 177.13 ns/op 1.06
byteArrayEquals 123687377 189.39 ms/op 189.43 ms/op 1.00
Buffer.compare 123687377 6.2256 ms/op 6.2180 ms/op 1.00
byteArrayEquals 32 - diff last byte 52.011 ns/op 51.841 ns/op 1.00
Buffer.compare 32 - diff last byte 16.953 ns/op 16.833 ns/op 1.01
byteArrayEquals 1024 - diff last byte 1.5734 us/op 1.5553 us/op 1.01
Buffer.compare 1024 - diff last byte 24.816 ns/op 24.733 ns/op 1.00
byteArrayEquals 16384 - diff last byte 25.068 us/op 24.778 us/op 1.01
Buffer.compare 16384 - diff last byte 203.05 ns/op 197.58 ns/op 1.03
byteArrayEquals 123687377 - diff last byte 189.65 ms/op 190.87 ms/op 0.99
Buffer.compare 123687377 - diff last byte 6.1924 ms/op 6.6831 ms/op 0.93
byteArrayEquals 32 - random bytes 5.0820 ns/op 5.1590 ns/op 0.99
Buffer.compare 32 - random bytes 16.980 ns/op 17.974 ns/op 0.94
byteArrayEquals 1024 - random bytes 5.0940 ns/op 5.1630 ns/op 0.99
Buffer.compare 1024 - random bytes 16.986 ns/op 17.252 ns/op 0.98
byteArrayEquals 16384 - random bytes 5.0750 ns/op 5.1510 ns/op 0.99
Buffer.compare 16384 - random bytes 16.947 ns/op 17.270 ns/op 0.98
byteArrayEquals 123687377 - random bytes 6.2900 ns/op 6.2400 ns/op 1.01
Buffer.compare 123687377 - random bytes 18.210 ns/op 18.130 ns/op 1.00
regular array get 100000 times 32.599 us/op 32.955 us/op 0.99
wrappedArray get 100000 times 43.434 us/op 33.235 us/op 1.31
arrayWithProxy get 100000 times 13.435 ms/op 12.997 ms/op 1.03
ssz.Root.equals 45.709 ns/op 46.417 ns/op 0.98
byteArrayEquals 44.832 ns/op 45.140 ns/op 0.99
Buffer.compare 10.241 ns/op 10.309 ns/op 0.99
processSlot - 1 slots 10.468 us/op 10.093 us/op 1.04
processSlot - 32 slots 3.8325 ms/op 2.4395 ms/op 1.57
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 65.090 ms/op 50.877 ms/op 1.28
getCommitteeAssignments - req 1 vs - 250000 vc 2.1215 ms/op 2.1615 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 4.1369 ms/op 4.1671 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3936 ms/op 4.3941 ms/op 1.00
findModifiedValidators - 10000 modified validators 751.81 ms/op 748.13 ms/op 1.00
findModifiedValidators - 1000 modified validators 698.93 ms/op 756.29 ms/op 0.92
findModifiedValidators - 100 modified validators 289.57 ms/op 240.54 ms/op 1.20
findModifiedValidators - 10 modified validators 130.77 ms/op 211.60 ms/op 0.62
findModifiedValidators - 1 modified validators 134.11 ms/op 140.67 ms/op 0.95
findModifiedValidators - no difference 139.88 ms/op 152.12 ms/op 0.92
compare ViewDUs 6.2011 s/op 6.1779 s/op 1.00
compare each validator Uint8Array 1.9748 s/op 1.0086 s/op 1.96
compare ViewDU to Uint8Array 926.78 ms/op 1.2022 s/op 0.77
migrate state 1000000 validators, 24 modified, 0 new 899.81 ms/op 824.66 ms/op 1.09
migrate state 1000000 validators, 1700 modified, 1000 new 1.2298 s/op 1.0762 s/op 1.14
migrate state 1000000 validators, 3400 modified, 2000 new 1.2909 s/op 1.2124 s/op 1.06
migrate state 1500000 validators, 24 modified, 0 new 978.42 ms/op 814.80 ms/op 1.20
migrate state 1500000 validators, 1700 modified, 1000 new 1.0758 s/op 968.33 ms/op 1.11
migrate state 1500000 validators, 3400 modified, 2000 new 1.3589 s/op 1.3190 s/op 1.03
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.0500 ns/op 4.2700 ns/op 0.95
state getBlockRootAtSlot - 250000 vs - 7PWei 581.79 ns/op 484.38 ns/op 1.20
naive computeProposerIndex 100000 validators 48.443 ms/op 53.845 ms/op 0.90
computeProposerIndex 100000 validators 8.0355 ms/op 9.5220 ms/op 0.84
naiveGetNextSyncCommitteeIndices 1000 validators 7.1998 s/op 7.6798 s/op 0.94
getNextSyncCommitteeIndices 1000 validators 243.70 ms/op 247.05 ms/op 0.99
naiveGetNextSyncCommitteeIndices 10000 validators 7.2800 s/op 7.4739 s/op 0.97
getNextSyncCommitteeIndices 10000 validators 250.14 ms/op 250.09 ms/op 1.00
naiveGetNextSyncCommitteeIndices 100000 validators 7.4622 s/op 7.8585 s/op 0.95
getNextSyncCommitteeIndices 100000 validators 240.89 ms/op 252.59 ms/op 0.95
naive computeShuffledIndex 100000 validators 23.201 s/op 23.622 s/op 0.98
cached computeShuffledIndex 100000 validators 534.10 ms/op 562.41 ms/op 0.95
naive computeShuffledIndex 2000000 validators 464.84 s/op 487.46 s/op 0.95
cached computeShuffledIndex 2000000 validators 28.690 s/op 36.297 s/op 0.79
computeProposers - vc 250000 9.7473 ms/op 9.2509 ms/op 1.05
computeEpochShuffling - vc 250000 41.348 ms/op 42.242 ms/op 0.98
getNextSyncCommittee - vc 250000 138.47 ms/op 168.48 ms/op 0.82
computeSigningRoot for AttestationData 23.890 us/op 27.595 us/op 0.87
hash AttestationData serialized data then Buffer.toString(base64) 1.5347 us/op 1.6304 us/op 0.94
toHexString serialized data 1.0652 us/op 1.2370 us/op 0.86
Buffer.toString(base64) 162.96 ns/op 158.47 ns/op 1.03
nodejs block root to RootHex using toHex 131.36 ns/op 141.90 ns/op 0.93
nodejs block root to RootHex using toRootHex 81.562 ns/op 84.418 ns/op 0.97
browser block root to RootHex using the deprecated toHexString 204.47 ns/op 206.86 ns/op 0.99
browser block root to RootHex using toHex 168.41 ns/op 166.52 ns/op 1.01
browser block root to RootHex using toRootHex 154.41 ns/op 157.37 ns/op 0.98

by benchmarkbot/action

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.

1 participant