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: update ssz to use non-simd on systems that do not support #7371

Merged
merged 8 commits into from
Jan 20, 2025

Conversation

matthewkeil
Copy link
Member

Motivation

Resolves #7177

Add check for system support of SIMD in @chainsafe/ssz and loads correct bindings on the target host.

@matthewkeil matthewkeil requested a review from a team as a code owner January 16, 2025 15:05
@matthewkeil matthewkeil marked this pull request as draft January 16, 2025 15:07
yarn.lock Outdated Show resolved Hide resolved
@matthewkeil matthewkeil marked this pull request as ready for review January 16, 2025 15:11
@matthewkeil matthewkeil requested a review from nflaig January 16, 2025 15:11
@nflaig nflaig changed the title chore: update ssz to use non-simd on systems that do not support fix: update ssz to use non-simd on systems that do not support Jan 16, 2025
nflaig
nflaig previously approved these changes Jan 16, 2025
Copy link
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

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

changed to fix to get more visibility in release notes on this

@matthewkeil matthewkeil marked this pull request as draft January 16, 2025 15:20
package.json Outdated Show resolved Hide resolved
@matthewkeil matthewkeil marked this pull request as ready for review January 20, 2025 17:33
@matthewkeil matthewkeil requested a review from nflaig January 20, 2025 17:33
@matthewkeil matthewkeil enabled auto-merge (squash) January 20, 2025 17:49
Copy link

codecov bot commented Jan 20, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 48.62%. Comparing base (0ac8bb9) to head (83012f6).
Report is 31 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7371      +/-   ##
============================================
- Coverage     48.76%   48.62%   -0.15%     
============================================
  Files           601      603       +2     
  Lines         40243    40516     +273     
  Branches       2067     2071       +4     
============================================
+ Hits          19626    19700      +74     
- Misses        20579    20778     +199     
  Partials         38       38              

@matthewkeil matthewkeil merged commit fcf82c3 into unstable Jan 20, 2025
20 checks passed
@matthewkeil matthewkeil deleted the mkeil/use-non-simd-ssz branch January 20, 2025 17:58
Copy link
Contributor

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 42ed382 Previous: 06831cf Ratio
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 2.9250 us/op 11.999 us/op 0.24
Full benchmark results
Benchmark suite Current: 42ed382 Previous: 06831cf Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.5951 ms/op 1.7507 ms/op 0.91
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 35.709 us/op 46.950 us/op 0.76
BLS verify - blst 908.68 us/op 983.98 us/op 0.92
BLS verifyMultipleSignatures 3 - blst 1.3355 ms/op 1.2295 ms/op 1.09
BLS verifyMultipleSignatures 8 - blst 2.1118 ms/op 1.8946 ms/op 1.11
BLS verifyMultipleSignatures 32 - blst 5.0500 ms/op 5.6728 ms/op 0.89
BLS verifyMultipleSignatures 64 - blst 9.0954 ms/op 11.067 ms/op 0.82
BLS verifyMultipleSignatures 128 - blst 16.117 ms/op 17.534 ms/op 0.92
BLS deserializing 10000 signatures 640.94 ms/op 696.53 ms/op 0.92
BLS deserializing 100000 signatures 6.2940 s/op 6.9720 s/op 0.90
BLS verifyMultipleSignatures - same message - 3 - blst 890.98 us/op 923.99 us/op 0.96
BLS verifyMultipleSignatures - same message - 8 - blst 1.0745 ms/op 1.1069 ms/op 0.97
BLS verifyMultipleSignatures - same message - 32 - blst 1.6760 ms/op 1.8766 ms/op 0.89
BLS verifyMultipleSignatures - same message - 64 - blst 2.6786 ms/op 2.6411 ms/op 1.01
BLS verifyMultipleSignatures - same message - 128 - blst 4.1698 ms/op 4.4469 ms/op 0.94
BLS aggregatePubkeys 32 - blst 18.559 us/op 19.903 us/op 0.93
BLS aggregatePubkeys 128 - blst 63.119 us/op 71.477 us/op 0.88
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 50.157 ms/op 61.814 ms/op 0.81
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 44.089 ms/op 59.550 ms/op 0.74
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 38.489 ms/op 49.640 ms/op 0.78
getSlashingsAndExits - default max 68.291 us/op 131.79 us/op 0.52
getSlashingsAndExits - 2k 402.28 us/op 434.87 us/op 0.93
proposeBlockBody type=full, size=empty 5.2233 ms/op 5.7538 ms/op 0.91
isKnown best case - 1 super set check 256.00 ns/op 269.00 ns/op 0.95
isKnown normal case - 2 super set checks 225.00 ns/op 258.00 ns/op 0.87
isKnown worse case - 16 super set checks 239.00 ns/op 259.00 ns/op 0.92
InMemoryCheckpointStateCache - add get delete 2.6130 us/op 2.5510 us/op 1.02
validate api signedAggregateAndProof - struct 1.4761 ms/op 1.4694 ms/op 1.00
validate gossip signedAggregateAndProof - struct 1.5978 ms/op 1.4483 ms/op 1.10
batch validate gossip attestation - vc 640000 - chunk 32 125.56 us/op 127.67 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 64 107.12 us/op 112.44 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 128 94.308 us/op 103.46 us/op 0.91
batch validate gossip attestation - vc 640000 - chunk 256 91.537 us/op 110.75 us/op 0.83
pickEth1Vote - no votes 784.69 us/op 1.0688 ms/op 0.73
pickEth1Vote - max votes 5.7876 ms/op 6.9442 ms/op 0.83
pickEth1Vote - Eth1Data hashTreeRoot value x2048 16.826 ms/op 20.736 ms/op 0.81
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.242 ms/op 25.418 ms/op 0.80
pickEth1Vote - Eth1Data fastSerialize value x2048 362.37 us/op 515.37 us/op 0.70
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.3305 ms/op 3.3694 ms/op 1.29
bytes32 toHexString 352.00 ns/op 440.00 ns/op 0.80
bytes32 Buffer.toString(hex) 203.00 ns/op 234.00 ns/op 0.87
bytes32 Buffer.toString(hex) from Uint8Array 284.00 ns/op 364.00 ns/op 0.78
bytes32 Buffer.toString(hex) + 0x 208.00 ns/op 235.00 ns/op 0.89
Object access 1 prop 0.12000 ns/op 0.12700 ns/op 0.94
Map access 1 prop 0.10100 ns/op 0.13000 ns/op 0.78
Object get x1000 4.9540 ns/op 5.7080 ns/op 0.87
Map get x1000 6.0680 ns/op 6.1850 ns/op 0.98
Object set x1000 21.886 ns/op 33.875 ns/op 0.65
Map set x1000 18.326 ns/op 23.656 ns/op 0.77
Return object 10000 times 0.27780 ns/op 0.29340 ns/op 0.95
Throw Error 10000 times 2.6251 us/op 3.3922 us/op 0.77
toHex 108.81 ns/op 174.14 ns/op 0.62
Buffer.from 101.47 ns/op 148.31 ns/op 0.68
shared Buffer 68.377 ns/op 101.62 ns/op 0.67
fastMsgIdFn sha256 / 200 bytes 1.7090 us/op 2.2980 us/op 0.74
fastMsgIdFn h32 xxhash / 200 bytes 180.00 ns/op 259.00 ns/op 0.69
fastMsgIdFn h64 xxhash / 200 bytes 207.00 ns/op 271.00 ns/op 0.76
fastMsgIdFn sha256 / 1000 bytes 5.2500 us/op 7.5540 us/op 0.69
fastMsgIdFn h32 xxhash / 1000 bytes 290.00 ns/op 396.00 ns/op 0.73
fastMsgIdFn h64 xxhash / 1000 bytes 265.00 ns/op 346.00 ns/op 0.77
fastMsgIdFn sha256 / 10000 bytes 46.274 us/op 64.768 us/op 0.71
fastMsgIdFn h32 xxhash / 10000 bytes 1.6570 us/op 1.8410 us/op 0.90
fastMsgIdFn h64 xxhash / 10000 bytes 1.0700 us/op 1.1980 us/op 0.89
send data - 1000 256B messages 9.6195 ms/op 11.654 ms/op 0.83
send data - 1000 512B messages 14.834 ms/op 18.581 ms/op 0.80
send data - 1000 1024B messages 21.650 ms/op 25.561 ms/op 0.85
send data - 1000 1200B messages 21.608 ms/op 26.575 ms/op 0.81
send data - 1000 2048B messages 26.031 ms/op 33.108 ms/op 0.79
send data - 1000 4096B messages 25.819 ms/op 31.326 ms/op 0.82
send data - 1000 16384B messages 59.483 ms/op 73.747 ms/op 0.81
send data - 1000 65536B messages 205.27 ms/op 201.74 ms/op 1.02
enrSubnets - fastDeserialize 64 bits 877.00 ns/op 1.0680 us/op 0.82
enrSubnets - ssz BitVector 64 bits 273.00 ns/op 354.00 ns/op 0.77
enrSubnets - fastDeserialize 4 bits 117.00 ns/op 148.00 ns/op 0.79
enrSubnets - ssz BitVector 4 bits 278.00 ns/op 342.00 ns/op 0.81
prioritizePeers score -10:0 att 32-0.1 sync 2-0 113.30 us/op 143.77 us/op 0.79
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 161.41 us/op 180.15 us/op 0.90
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 209.93 us/op 239.65 us/op 0.88
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 349.58 us/op 395.31 us/op 0.88
prioritizePeers score 0:0 att 64-1 sync 4-1 422.97 us/op 523.13 us/op 0.81
array of 16000 items push then shift 1.2628 us/op 1.5830 us/op 0.80
LinkedList of 16000 items push then shift 6.9980 ns/op 6.9440 ns/op 1.01
array of 16000 items push then pop 92.415 ns/op 90.495 ns/op 1.02
LinkedList of 16000 items push then pop 5.8560 ns/op 6.8460 ns/op 0.86
array of 24000 items push then shift 1.9095 us/op 2.3390 us/op 0.82
LinkedList of 24000 items push then shift 5.9590 ns/op 6.9440 ns/op 0.86
array of 24000 items push then pop 106.49 ns/op 130.04 ns/op 0.82
LinkedList of 24000 items push then pop 6.0530 ns/op 7.1690 ns/op 0.84
intersect bitArray bitLen 8 5.3870 ns/op 6.5370 ns/op 0.82
intersect array and set length 8 37.102 ns/op 44.962 ns/op 0.83
intersect bitArray bitLen 128 25.810 ns/op 29.862 ns/op 0.86
intersect array and set length 128 572.24 ns/op 661.62 ns/op 0.86
bitArray.getTrueBitIndexes() bitLen 128 1.3400 us/op 1.4280 us/op 0.94
bitArray.getTrueBitIndexes() bitLen 248 2.0790 us/op 2.3110 us/op 0.90
bitArray.getTrueBitIndexes() bitLen 512 3.9910 us/op 4.5870 us/op 0.87
Buffer.concat 32 items 725.00 ns/op 855.00 ns/op 0.85
Uint8Array.set 32 items 1.6470 us/op 1.6460 us/op 1.00
Buffer.copy 2.6500 us/op 2.7200 us/op 0.97
Uint8Array.set - with subarray 2.1630 us/op 2.2170 us/op 0.98
Uint8Array.set - without subarray 1.5310 us/op 1.4700 us/op 1.04
getUint32 - dataview 166.00 ns/op 229.00 ns/op 0.72
getUint32 - manual 111.00 ns/op 153.00 ns/op 0.73
Set add up to 64 items then delete first 1.7604 us/op 2.1612 us/op 0.81
OrderedSet add up to 64 items then delete first 2.6836 us/op 3.2004 us/op 0.84
Set add up to 64 items then delete last 1.9839 us/op 2.4304 us/op 0.82
OrderedSet add up to 64 items then delete last 3.0987 us/op 3.5876 us/op 0.86
Set add up to 64 items then delete middle 2.0103 us/op 2.4918 us/op 0.81
OrderedSet add up to 64 items then delete middle 4.4705 us/op 5.1155 us/op 0.87
Set add up to 128 items then delete first 3.8832 us/op 5.1838 us/op 0.75
OrderedSet add up to 128 items then delete first 5.7765 us/op 7.5986 us/op 0.76
Set add up to 128 items then delete last 3.8470 us/op 4.8289 us/op 0.80
OrderedSet add up to 128 items then delete last 5.9805 us/op 7.2762 us/op 0.82
Set add up to 128 items then delete middle 3.8320 us/op 4.8385 us/op 0.79
OrderedSet add up to 128 items then delete middle 11.900 us/op 13.616 us/op 0.87
Set add up to 256 items then delete first 7.7505 us/op 10.098 us/op 0.77
OrderedSet add up to 256 items then delete first 11.716 us/op 15.869 us/op 0.74
Set add up to 256 items then delete last 7.8089 us/op 9.6884 us/op 0.81
OrderedSet add up to 256 items then delete last 12.079 us/op 14.538 us/op 0.83
Set add up to 256 items then delete middle 7.6454 us/op 9.5623 us/op 0.80
OrderedSet add up to 256 items then delete middle 34.163 us/op 40.974 us/op 0.83
transfer serialized Status (84 B) 1.8440 us/op 2.5380 us/op 0.73
copy serialized Status (84 B) 1.0710 us/op 1.2440 us/op 0.86
transfer serialized SignedVoluntaryExit (112 B) 2.0050 us/op 2.5400 us/op 0.79
copy serialized SignedVoluntaryExit (112 B) 1.1750 us/op 1.2680 us/op 0.93
transfer serialized ProposerSlashing (416 B) 2.6500 us/op 2.6400 us/op 1.00
copy serialized ProposerSlashing (416 B) 2.0890 us/op 1.4000 us/op 1.49
transfer serialized Attestation (485 B) 2.9270 us/op 2.8490 us/op 1.03
copy serialized Attestation (485 B) 2.0450 us/op 1.9690 us/op 1.04
transfer serialized AttesterSlashing (33232 B) 2.4430 us/op 3.2910 us/op 0.74
copy serialized AttesterSlashing (33232 B) 4.8590 us/op 5.0310 us/op 0.97
transfer serialized Small SignedBeaconBlock (128000 B) 3.5380 us/op 4.4830 us/op 0.79
copy serialized Small SignedBeaconBlock (128000 B) 10.439 us/op 14.137 us/op 0.74
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2130 us/op 4.8160 us/op 0.67
copy serialized Avg SignedBeaconBlock (200000 B) 13.664 us/op 19.553 us/op 0.70
transfer serialized BlobsSidecar (524380 B) 4.2310 us/op 4.0750 us/op 1.04
copy serialized BlobsSidecar (524380 B) 78.168 us/op 177.96 us/op 0.44
transfer serialized Big SignedBeaconBlock (1000000 B) 4.5490 us/op 4.3430 us/op 1.05
copy serialized Big SignedBeaconBlock (1000000 B) 138.18 us/op 150.86 us/op 0.92
pass gossip attestations to forkchoice per slot 2.7280 ms/op 2.7567 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 426.34 us/op 456.67 us/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 0 3.0919 ms/op 3.3429 ms/op 0.92
forkChoice updateHead vc 1000000 bc 64 eq 0 3.4053 ms/op 4.8417 ms/op 0.70
forkChoice updateHead vc 600000 bc 320 eq 0 2.0599 ms/op 2.8573 ms/op 0.72
forkChoice updateHead vc 600000 bc 1200 eq 0 2.1300 ms/op 2.8911 ms/op 0.74
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0030 ms/op 3.6141 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 1000 9.5131 ms/op 10.534 ms/op 0.90
forkChoice updateHead vc 600000 bc 64 eq 10000 9.5861 ms/op 10.486 ms/op 0.91
forkChoice updateHead vc 600000 bc 64 eq 300000 12.525 ms/op 14.028 ms/op 0.89
computeDeltas 500000 validators 300 proto nodes 3.3798 ms/op 4.1342 ms/op 0.82
computeDeltas 500000 validators 1200 proto nodes 3.4580 ms/op 4.2797 ms/op 0.81
computeDeltas 500000 validators 7200 proto nodes 3.5026 ms/op 5.0443 ms/op 0.69
computeDeltas 750000 validators 300 proto nodes 5.2141 ms/op 6.4580 ms/op 0.81
computeDeltas 750000 validators 1200 proto nodes 5.2488 ms/op 6.4997 ms/op 0.81
computeDeltas 750000 validators 7200 proto nodes 5.3618 ms/op 6.6634 ms/op 0.80
computeDeltas 1400000 validators 300 proto nodes 9.8236 ms/op 12.145 ms/op 0.81
computeDeltas 1400000 validators 1200 proto nodes 9.7338 ms/op 12.664 ms/op 0.77
computeDeltas 1400000 validators 7200 proto nodes 9.2957 ms/op 12.881 ms/op 0.72
computeDeltas 2100000 validators 300 proto nodes 14.160 ms/op 20.489 ms/op 0.69
computeDeltas 2100000 validators 1200 proto nodes 15.283 ms/op 19.227 ms/op 0.79
computeDeltas 2100000 validators 7200 proto nodes 17.279 ms/op 21.764 ms/op 0.79
altair processAttestation - 250000 vs - 7PWei normalcase 1.6145 ms/op 3.1560 ms/op 0.51
altair processAttestation - 250000 vs - 7PWei worstcase 2.4233 ms/op 3.9778 ms/op 0.61
altair processAttestation - setStatus - 1/6 committees join 91.058 us/op 152.67 us/op 0.60
altair processAttestation - setStatus - 1/3 committees join 186.15 us/op 285.59 us/op 0.65
altair processAttestation - setStatus - 1/2 committees join 269.94 us/op 387.68 us/op 0.70
altair processAttestation - setStatus - 2/3 committees join 351.51 us/op 517.32 us/op 0.68
altair processAttestation - setStatus - 4/5 committees join 495.47 us/op 691.87 us/op 0.72
altair processAttestation - setStatus - 100% committees join 591.20 us/op 764.08 us/op 0.77
altair processBlock - 250000 vs - 7PWei normalcase 4.5994 ms/op 5.2380 ms/op 0.88
altair processBlock - 250000 vs - 7PWei normalcase hashState 28.115 ms/op 29.182 ms/op 0.96
altair processBlock - 250000 vs - 7PWei worstcase 34.823 ms/op 41.337 ms/op 0.84
altair processBlock - 250000 vs - 7PWei worstcase hashState 76.255 ms/op 87.230 ms/op 0.87
phase0 processBlock - 250000 vs - 7PWei normalcase 2.1050 ms/op 2.0467 ms/op 1.03
phase0 processBlock - 250000 vs - 7PWei worstcase 23.373 ms/op 26.573 ms/op 0.88
altair processEth1Data - 250000 vs - 7PWei normalcase 356.76 us/op 448.01 us/op 0.80
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.4710 us/op 11.277 us/op 0.49
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 32.614 us/op 58.652 us/op 0.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 8.6790 us/op 23.448 us/op 0.37
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 2.9250 us/op 11.999 us/op 0.24
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 125.72 us/op 229.13 us/op 0.55
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 858.92 us/op 1.9461 ms/op 0.44
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.0844 ms/op 2.1222 ms/op 0.51
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.0791 ms/op 1.9983 ms/op 0.54
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.0696 ms/op 6.2819 ms/op 0.49
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.1192 ms/op 2.0028 ms/op 0.56
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.0672 ms/op 6.0817 ms/op 0.50
Tree 40 250000 create 353.17 ms/op 280.07 ms/op 1.26
Tree 40 250000 get(125000) 109.51 ns/op 160.03 ns/op 0.68
Tree 40 250000 set(125000) 1.2013 us/op 702.79 ns/op 1.71
Tree 40 250000 toArray() 9.7175 ms/op 21.092 ms/op 0.46
Tree 40 250000 iterate all - toArray() + loop 9.7099 ms/op 20.966 ms/op 0.46
Tree 40 250000 iterate all - get(i) 41.355 ms/op 58.315 ms/op 0.71
Array 250000 create 2.3187 ms/op 3.8893 ms/op 0.60
Array 250000 clone - spread 1.2342 ms/op 1.4673 ms/op 0.84
Array 250000 get(125000) 0.37300 ns/op 0.43300 ns/op 0.86
Array 250000 set(125000) 0.38700 ns/op 0.46100 ns/op 0.84
Array 250000 iterate all - loop 77.299 us/op 103.87 us/op 0.74
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.573 ms/op 52.860 ms/op 0.79
Array.fill - length 1000000 2.5635 ms/op 3.9239 ms/op 0.65
Array push - length 1000000 14.021 ms/op 21.329 ms/op 0.66
Array.get 0.26454 ns/op 0.28924 ns/op 0.91
Uint8Array.get 0.34035 ns/op 0.45635 ns/op 0.75
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.410 ms/op 21.419 ms/op 0.58
altair processEpoch - mainnet_e81889 249.44 ms/op 286.89 ms/op 0.87
mainnet_e81889 - altair beforeProcessEpoch 18.006 ms/op 18.919 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 12.918 us/op 23.766 us/op 0.54
mainnet_e81889 - altair processInactivityUpdates 4.3264 ms/op 5.4120 ms/op 0.80
mainnet_e81889 - altair processRewardsAndPenalties 50.466 ms/op 53.390 ms/op 0.95
mainnet_e81889 - altair processRegistryUpdates 1.0660 us/op 4.2250 us/op 0.25
mainnet_e81889 - altair processSlashings 859.00 ns/op 626.00 ns/op 1.37
mainnet_e81889 - altair processEth1DataReset 378.00 ns/op 885.00 ns/op 0.43
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7087 ms/op 1.2921 ms/op 1.32
mainnet_e81889 - altair processSlashingsReset 3.3360 us/op 7.5750 us/op 0.44
mainnet_e81889 - altair processRandaoMixesReset 3.8100 us/op 8.0250 us/op 0.47
mainnet_e81889 - altair processHistoricalRootsUpdate 633.00 ns/op 938.00 ns/op 0.67
mainnet_e81889 - altair processParticipationFlagUpdates 1.6520 us/op 3.5730 us/op 0.46
mainnet_e81889 - altair processSyncCommitteeUpdates 419.00 ns/op 1.1900 us/op 0.35
mainnet_e81889 - altair afterProcessEpoch 41.105 ms/op 52.185 ms/op 0.79
capella processEpoch - mainnet_e217614 860.05 ms/op 1.0619 s/op 0.81
mainnet_e217614 - capella beforeProcessEpoch 64.720 ms/op 71.217 ms/op 0.91
mainnet_e217614 - capella processJustificationAndFinalization 11.142 us/op 17.484 us/op 0.64
mainnet_e217614 - capella processInactivityUpdates 14.609 ms/op 17.756 ms/op 0.82
mainnet_e217614 - capella processRewardsAndPenalties 203.19 ms/op 245.55 ms/op 0.83
mainnet_e217614 - capella processRegistryUpdates 9.6610 us/op 22.987 us/op 0.42
mainnet_e217614 - capella processSlashings 506.00 ns/op 716.00 ns/op 0.71
mainnet_e217614 - capella processEth1DataReset 347.00 ns/op 601.00 ns/op 0.58
mainnet_e217614 - capella processEffectiveBalanceUpdates 13.038 ms/op 14.715 ms/op 0.89
mainnet_e217614 - capella processSlashingsReset 2.4330 us/op 5.6120 us/op 0.43
mainnet_e217614 - capella processRandaoMixesReset 4.0790 us/op 6.8050 us/op 0.60
mainnet_e217614 - capella processHistoricalRootsUpdate 492.00 ns/op 1.1240 us/op 0.44
mainnet_e217614 - capella processParticipationFlagUpdates 2.5790 us/op 1.9270 us/op 1.34
mainnet_e217614 - capella afterProcessEpoch 103.86 ms/op 123.12 ms/op 0.84
phase0 processEpoch - mainnet_e58758 296.70 ms/op 350.83 ms/op 0.85
mainnet_e58758 - phase0 beforeProcessEpoch 70.066 ms/op 81.401 ms/op 0.86
mainnet_e58758 - phase0 processJustificationAndFinalization 10.588 us/op 21.000 us/op 0.50
mainnet_e58758 - phase0 processRewardsAndPenalties 30.517 ms/op 31.468 ms/op 0.97
mainnet_e58758 - phase0 processRegistryUpdates 5.3030 us/op 12.887 us/op 0.41
mainnet_e58758 - phase0 processSlashings 390.00 ns/op 648.00 ns/op 0.60
mainnet_e58758 - phase0 processEth1DataReset 334.00 ns/op 559.00 ns/op 0.60
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.4067 ms/op 1.4568 ms/op 0.97
mainnet_e58758 - phase0 processSlashingsReset 1.7750 us/op 3.2670 us/op 0.54
mainnet_e58758 - phase0 processRandaoMixesReset 3.1020 us/op 5.4580 us/op 0.57
mainnet_e58758 - phase0 processHistoricalRootsUpdate 343.00 ns/op 642.00 ns/op 0.53
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.0280 us/op 3.8330 us/op 0.79
mainnet_e58758 - phase0 afterProcessEpoch 35.778 ms/op 43.501 ms/op 0.82
phase0 processEffectiveBalanceUpdates - 250000 normalcase 985.92 us/op 2.1973 ms/op 0.45
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.3772 ms/op 2.7974 ms/op 0.49
altair processInactivityUpdates - 250000 normalcase 16.749 ms/op 20.705 ms/op 0.81
altair processInactivityUpdates - 250000 worstcase 15.839 ms/op 20.126 ms/op 0.79
phase0 processRegistryUpdates - 250000 normalcase 3.9610 us/op 11.566 us/op 0.34
phase0 processRegistryUpdates - 250000 badcase_full_deposits 275.57 us/op 485.30 us/op 0.57
phase0 processRegistryUpdates - 250000 worstcase 0.5 101.58 ms/op 108.23 ms/op 0.94
altair processRewardsAndPenalties - 250000 normalcase 40.338 ms/op 39.966 ms/op 1.01
altair processRewardsAndPenalties - 250000 worstcase 34.887 ms/op 49.152 ms/op 0.71
phase0 getAttestationDeltas - 250000 normalcase 5.2163 ms/op 7.4544 ms/op 0.70
phase0 getAttestationDeltas - 250000 worstcase 5.8125 ms/op 6.9910 ms/op 0.83
phase0 processSlashings - 250000 worstcase 84.132 us/op 112.31 us/op 0.75
altair processSyncCommitteeUpdates - 250000 94.104 ms/op 120.03 ms/op 0.78
BeaconState.hashTreeRoot - No change 210.00 ns/op 265.00 ns/op 0.79
BeaconState.hashTreeRoot - 1 full validator 87.346 us/op 114.36 us/op 0.76
BeaconState.hashTreeRoot - 32 full validator 708.35 us/op 1.1875 ms/op 0.60
BeaconState.hashTreeRoot - 512 full validator 7.7390 ms/op 9.1215 ms/op 0.85
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 84.105 us/op 111.50 us/op 0.75
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1831 ms/op 1.7457 ms/op 0.68
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.535 ms/op 19.844 ms/op 0.73
BeaconState.hashTreeRoot - 1 balances 70.094 us/op 101.91 us/op 0.69
BeaconState.hashTreeRoot - 32 balances 625.09 us/op 752.61 us/op 0.83
BeaconState.hashTreeRoot - 512 balances 5.5621 ms/op 6.9835 ms/op 0.80
BeaconState.hashTreeRoot - 250000 balances 109.09 ms/op 177.07 ms/op 0.62
aggregationBits - 2048 els - zipIndexesInBitList 19.921 us/op 24.421 us/op 0.82
byteArrayEquals 32 46.708 ns/op 53.382 ns/op 0.87
Buffer.compare 32 15.506 ns/op 17.055 ns/op 0.91
byteArrayEquals 1024 1.2646 us/op 1.5949 us/op 0.79
Buffer.compare 1024 30.607 ns/op 25.418 ns/op 1.20
byteArrayEquals 16384 20.044 us/op 25.274 us/op 0.79
Buffer.compare 16384 173.36 ns/op 192.47 ns/op 0.90
byteArrayEquals 123687377 151.31 ms/op 189.85 ms/op 0.80
Buffer.compare 123687377 3.7418 ms/op 6.7574 ms/op 0.55
byteArrayEquals 32 - diff last byte 46.873 ns/op 53.723 ns/op 0.87
Buffer.compare 32 - diff last byte 15.718 ns/op 18.233 ns/op 0.86
byteArrayEquals 1024 - diff last byte 1.2530 us/op 1.6103 us/op 0.78
Buffer.compare 1024 - diff last byte 23.115 ns/op 25.523 ns/op 0.91
byteArrayEquals 16384 - diff last byte 19.856 us/op 25.601 us/op 0.78
Buffer.compare 16384 - diff last byte 201.25 ns/op 194.22 ns/op 1.04
byteArrayEquals 123687377 - diff last byte 150.17 ms/op 193.49 ms/op 0.78
Buffer.compare 123687377 - diff last byte 5.6390 ms/op 6.3706 ms/op 0.89
byteArrayEquals 32 - random bytes 4.7950 ns/op 5.1410 ns/op 0.93
Buffer.compare 32 - random bytes 15.934 ns/op 17.104 ns/op 0.93
byteArrayEquals 1024 - random bytes 4.6000 ns/op 5.1330 ns/op 0.90
Buffer.compare 1024 - random bytes 15.215 ns/op 17.096 ns/op 0.89
byteArrayEquals 16384 - random bytes 4.4640 ns/op 5.1160 ns/op 0.87
Buffer.compare 16384 - random bytes 14.216 ns/op 17.117 ns/op 0.83
byteArrayEquals 123687377 - random bytes 5.4100 ns/op 6.4300 ns/op 0.84
Buffer.compare 123687377 - random bytes 15.530 ns/op 18.340 ns/op 0.85
regular array get 100000 times 29.261 us/op 32.877 us/op 0.89
wrappedArray get 100000 times 29.497 us/op 32.854 us/op 0.90
arrayWithProxy get 100000 times 9.5489 ms/op 13.154 ms/op 0.73
ssz.Root.equals 44.536 ns/op 45.555 ns/op 0.98
byteArrayEquals 41.991 ns/op 45.045 ns/op 0.93
Buffer.compare 8.5380 ns/op 10.242 ns/op 0.83
processSlot - 1 slots 13.291 us/op 13.959 us/op 0.95
processSlot - 32 slots 3.1813 ms/op 3.0562 ms/op 1.04
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 35.960 ms/op 39.411 ms/op 0.91
getCommitteeAssignments - req 1 vs - 250000 vc 1.8654 ms/op 2.1510 ms/op 0.87
getCommitteeAssignments - req 100 vs - 250000 vc 3.5837 ms/op 4.1608 ms/op 0.86
getCommitteeAssignments - req 1000 vs - 250000 vc 3.8381 ms/op 4.6719 ms/op 0.82
findModifiedValidators - 10000 modified validators 239.94 ms/op 305.03 ms/op 0.79
findModifiedValidators - 1000 modified validators 147.24 ms/op 174.47 ms/op 0.84
findModifiedValidators - 100 modified validators 142.86 ms/op 169.30 ms/op 0.84
findModifiedValidators - 10 modified validators 168.83 ms/op 176.44 ms/op 0.96
findModifiedValidators - 1 modified validators 155.44 ms/op 158.91 ms/op 0.98
findModifiedValidators - no difference 172.11 ms/op 169.76 ms/op 1.01
compare ViewDUs 3.1563 s/op 3.3481 s/op 0.94
compare each validator Uint8Array 2.0283 s/op 1.6522 s/op 1.23
compare ViewDU to Uint8Array 863.08 ms/op 1.0330 s/op 0.84
migrate state 1000000 validators, 24 modified, 0 new 731.77 ms/op 747.44 ms/op 0.98
migrate state 1000000 validators, 1700 modified, 1000 new 959.27 ms/op 998.72 ms/op 0.96
migrate state 1000000 validators, 3400 modified, 2000 new 1.2016 s/op 1.2204 s/op 0.98
migrate state 1500000 validators, 24 modified, 0 new 714.47 ms/op 807.33 ms/op 0.88
migrate state 1500000 validators, 1700 modified, 1000 new 897.37 ms/op 1.1234 s/op 0.80
migrate state 1500000 validators, 3400 modified, 2000 new 1.0777 s/op 1.2723 s/op 0.85
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.3100 ns/op 4.9800 ns/op 0.87
state getBlockRootAtSlot - 250000 vs - 7PWei 949.93 ns/op 609.66 ns/op 1.56
computeProposers - vc 250000 7.2006 ms/op 8.8333 ms/op 0.82
computeEpochShuffling - vc 250000 35.372 ms/op 44.316 ms/op 0.80
getNextSyncCommittee - vc 250000 119.13 ms/op 143.98 ms/op 0.83
computeSigningRoot for AttestationData 25.245 us/op 26.277 us/op 0.96
hash AttestationData serialized data then Buffer.toString(base64) 1.2336 us/op 1.6902 us/op 0.73
toHexString serialized data 782.08 ns/op 1.0382 us/op 0.75
Buffer.toString(base64) 128.34 ns/op 208.97 ns/op 0.61
nodejs block root to RootHex using toHex 117.22 ns/op 184.02 ns/op 0.64
nodejs block root to RootHex using toRootHex 74.072 ns/op 97.967 ns/op 0.76
browser block root to RootHex using the deprecated toHexString 206.21 ns/op 240.76 ns/op 0.86
browser block root to RootHex using toHex 170.35 ns/op 183.96 ns/op 0.93
browser block root to RootHex using toRootHex 147.95 ns/op 172.11 ns/op 0.86

by benchmarkbot/action

wemeetagain added a commit that referenced this pull request Jan 21, 2025
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.

CompileError: WebAssembly.Module(): Wasm SIMD unsupported
2 participants