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: use cjs version of hasher #7387

Closed
wants to merge 2 commits into from
Closed

Conversation

matthewkeil
Copy link
Member

Motivation

There was a performance regression because the wrong hasher (default noble) was getting used by the ssz lib even though the as-sha256 was set. Has to do with dual module export and node resolving both versions of the library.

Copy link

codecov bot commented Jan 22, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 48.62%. Comparing base (d584aed) to head (6a43223).
Report is 4 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #7387   +/-   ##
=========================================
  Coverage     48.62%   48.62%           
=========================================
  Files           603      603           
  Lines         40510    40510           
  Branches       2071     2071           
=========================================
  Hits          19700    19700           
  Misses        20772    20772           
  Partials         38       38           

Copy link
Contributor

⚠️ Performance Alert ⚠️

Possible performance regression was detected for some benchmarks.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.

Benchmark suite Current: 7f9c97b Previous: d584aed Ratio
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 10.623 us/op 2.7950 us/op 3.80
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 61.100 us/op 17.882 us/op 3.42
Array.fill - length 1000000 7.5727 ms/op 2.2377 ms/op 3.38
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 4.8461 ms/op 1.3412 ms/op 3.61
Full benchmark results
Benchmark suite Current: 7f9c97b Previous: d584aed Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.4560 ms/op 1.5995 ms/op 1.54
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 60.093 us/op 32.423 us/op 1.85
BLS verify - blst 987.81 us/op 894.82 us/op 1.10
BLS verifyMultipleSignatures 3 - blst 1.4575 ms/op 1.3409 ms/op 1.09
BLS verifyMultipleSignatures 8 - blst 2.0940 ms/op 2.0534 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst 6.3097 ms/op 4.4121 ms/op 1.43
BLS verifyMultipleSignatures 64 - blst 11.437 ms/op 8.2600 ms/op 1.38
BLS verifyMultipleSignatures 128 - blst 19.483 ms/op 15.677 ms/op 1.24
BLS deserializing 10000 signatures 753.47 ms/op 642.86 ms/op 1.17
BLS deserializing 100000 signatures 7.5360 s/op 6.6339 s/op 1.14
BLS verifyMultipleSignatures - same message - 3 - blst 994.67 us/op 937.64 us/op 1.06
BLS verifyMultipleSignatures - same message - 8 - blst 1.1138 ms/op 1.0316 ms/op 1.08
BLS verifyMultipleSignatures - same message - 32 - blst 1.8478 ms/op 1.6675 ms/op 1.11
BLS verifyMultipleSignatures - same message - 64 - blst 2.7839 ms/op 2.4738 ms/op 1.13
BLS verifyMultipleSignatures - same message - 128 - blst 4.7091 ms/op 4.0126 ms/op 1.17
BLS aggregatePubkeys 32 - blst 21.323 us/op 18.216 us/op 1.17
BLS aggregatePubkeys 128 - blst 77.666 us/op 63.269 us/op 1.23
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 104.88 ms/op 44.756 ms/op 2.34
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 59.419 ms/op 38.669 ms/op 1.54
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 43.242 ms/op 34.266 ms/op 1.26
getSlashingsAndExits - default max 109.12 us/op 54.772 us/op 1.99
getSlashingsAndExits - 2k 364.92 us/op 254.80 us/op 1.43
proposeBlockBody type=full, size=empty 6.0387 ms/op 4.2684 ms/op 1.41
isKnown best case - 1 super set check 375.00 ns/op 463.00 ns/op 0.81
isKnown normal case - 2 super set checks 336.00 ns/op 438.00 ns/op 0.77
isKnown worse case - 16 super set checks 309.00 ns/op 436.00 ns/op 0.71
InMemoryCheckpointStateCache - add get delete 3.4180 us/op 2.7120 us/op 1.26
validate api signedAggregateAndProof - struct 1.6175 ms/op 2.0252 ms/op 0.80
validate gossip signedAggregateAndProof - struct 1.8154 ms/op 1.7471 ms/op 1.04
batch validate gossip attestation - vc 640000 - chunk 32 145.60 us/op 124.62 us/op 1.17
batch validate gossip attestation - vc 640000 - chunk 64 131.56 us/op 102.98 us/op 1.28
batch validate gossip attestation - vc 640000 - chunk 128 126.53 us/op 95.936 us/op 1.32
batch validate gossip attestation - vc 640000 - chunk 256 124.78 us/op 94.064 us/op 1.33
pickEth1Vote - no votes 1.2020 ms/op 784.87 us/op 1.53
pickEth1Vote - max votes 9.3764 ms/op 4.7289 ms/op 1.98
pickEth1Vote - Eth1Data hashTreeRoot value x2048 17.170 ms/op 18.862 ms/op 0.91
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 28.498 ms/op 21.093 ms/op 1.35
pickEth1Vote - Eth1Data fastSerialize value x2048 679.31 us/op 388.43 us/op 1.75
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.8955 ms/op 3.2427 ms/op 1.20
bytes32 toHexString 642.00 ns/op 592.00 ns/op 1.08
bytes32 Buffer.toString(hex) 275.00 ns/op 409.00 ns/op 0.67
bytes32 Buffer.toString(hex) from Uint8Array 488.00 ns/op 509.00 ns/op 0.96
bytes32 Buffer.toString(hex) + 0x 279.00 ns/op 416.00 ns/op 0.67
Object access 1 prop 0.20200 ns/op 0.33100 ns/op 0.61
Map access 1 prop 0.15100 ns/op 0.32700 ns/op 0.46
Object get x1000 6.4380 ns/op 4.8180 ns/op 1.34
Map get x1000 7.1880 ns/op 5.4930 ns/op 1.31
Object set x1000 43.067 ns/op 22.332 ns/op 1.93
Map set x1000 28.690 ns/op 19.022 ns/op 1.51
Return object 10000 times 0.33320 ns/op 0.28150 ns/op 1.18
Throw Error 10000 times 3.7901 us/op 2.5034 us/op 1.51
toHex 169.11 ns/op 98.527 ns/op 1.72
Buffer.from 170.69 ns/op 90.349 ns/op 1.89
shared Buffer 101.45 ns/op 60.849 ns/op 1.67
fastMsgIdFn sha256 / 200 bytes 2.6250 us/op 1.8710 us/op 1.40
fastMsgIdFn h32 xxhash / 200 bytes 292.00 ns/op 384.00 ns/op 0.76
fastMsgIdFn h64 xxhash / 200 bytes 304.00 ns/op 425.00 ns/op 0.72
fastMsgIdFn sha256 / 1000 bytes 7.9650 us/op 5.7070 us/op 1.40
fastMsgIdFn h32 xxhash / 1000 bytes 434.00 ns/op 531.00 ns/op 0.82
fastMsgIdFn h64 xxhash / 1000 bytes 389.00 ns/op 506.00 ns/op 0.77
fastMsgIdFn sha256 / 10000 bytes 70.047 us/op 46.214 us/op 1.52
fastMsgIdFn h32 xxhash / 10000 bytes 2.0750 us/op 1.8090 us/op 1.15
fastMsgIdFn h64 xxhash / 10000 bytes 1.3470 us/op 1.2590 us/op 1.07
send data - 1000 256B messages 15.559 ms/op 10.374 ms/op 1.50
send data - 1000 512B messages 19.807 ms/op 14.851 ms/op 1.33
send data - 1000 1024B messages 29.343 ms/op 22.370 ms/op 1.31
send data - 1000 1200B messages 29.937 ms/op 24.249 ms/op 1.23
send data - 1000 2048B messages 33.924 ms/op 29.278 ms/op 1.16
send data - 1000 4096B messages 32.763 ms/op 25.223 ms/op 1.30
send data - 1000 16384B messages 79.058 ms/op 65.741 ms/op 1.20
send data - 1000 65536B messages 233.00 ms/op 257.96 ms/op 0.90
enrSubnets - fastDeserialize 64 bits 1.6240 us/op 1.0700 us/op 1.52
enrSubnets - ssz BitVector 64 bits 484.00 ns/op 493.00 ns/op 0.98
enrSubnets - fastDeserialize 4 bits 204.00 ns/op 323.00 ns/op 0.63
enrSubnets - ssz BitVector 4 bits 481.00 ns/op 500.00 ns/op 0.96
prioritizePeers score -10:0 att 32-0.1 sync 2-0 197.47 us/op 106.50 us/op 1.85
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 215.47 us/op 128.80 us/op 1.67
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 339.58 us/op 189.38 us/op 1.79
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 548.85 us/op 347.90 us/op 1.58
prioritizePeers score 0:0 att 64-1 sync 4-1 694.67 us/op 416.61 us/op 1.67
array of 16000 items push then shift 1.8034 us/op 1.2035 us/op 1.50
LinkedList of 16000 items push then shift 8.7540 ns/op 7.0750 ns/op 1.24
array of 16000 items push then pop 132.60 ns/op 85.527 ns/op 1.55
LinkedList of 16000 items push then pop 8.0000 ns/op 6.0900 ns/op 1.31
array of 24000 items push then shift 2.6688 us/op 1.7561 us/op 1.52
LinkedList of 24000 items push then shift 9.0640 ns/op 6.7800 ns/op 1.34
array of 24000 items push then pop 178.83 ns/op 106.25 ns/op 1.68
LinkedList of 24000 items push then pop 8.6740 ns/op 5.9720 ns/op 1.45
intersect bitArray bitLen 8 7.1130 ns/op 5.1510 ns/op 1.38
intersect array and set length 8 66.226 ns/op 35.139 ns/op 1.88
intersect bitArray bitLen 128 32.684 ns/op 25.152 ns/op 1.30
intersect array and set length 128 894.12 ns/op 534.40 ns/op 1.67
bitArray.getTrueBitIndexes() bitLen 128 1.9750 us/op 1.2870 us/op 1.53
bitArray.getTrueBitIndexes() bitLen 248 3.0750 us/op 2.1450 us/op 1.43
bitArray.getTrueBitIndexes() bitLen 512 6.6950 us/op 3.7920 us/op 1.77
Buffer.concat 32 items 1.0640 us/op 884.00 ns/op 1.20
Uint8Array.set 32 items 2.2320 us/op 2.0060 us/op 1.11
Buffer.copy 3.0990 us/op 2.8750 us/op 1.08
Uint8Array.set - with subarray 2.8170 us/op 2.7440 us/op 1.03
Uint8Array.set - without subarray 1.8320 us/op 2.0380 us/op 0.90
getUint32 - dataview 320.00 ns/op 384.00 ns/op 0.83
getUint32 - manual 247.00 ns/op 325.00 ns/op 0.76
Set add up to 64 items then delete first 2.9806 us/op 1.7467 us/op 1.71
OrderedSet add up to 64 items then delete first 4.5210 us/op 2.7100 us/op 1.67
Set add up to 64 items then delete last 3.3974 us/op 1.9930 us/op 1.70
OrderedSet add up to 64 items then delete last 5.1921 us/op 2.8755 us/op 1.81
Set add up to 64 items then delete middle 3.2851 us/op 1.8524 us/op 1.77
OrderedSet add up to 64 items then delete middle 6.7801 us/op 4.1289 us/op 1.64
Set add up to 128 items then delete first 6.6301 us/op 3.6746 us/op 1.80
OrderedSet add up to 128 items then delete first 10.444 us/op 6.1900 us/op 1.69
Set add up to 128 items then delete last 6.4223 us/op 3.6970 us/op 1.74
OrderedSet add up to 128 items then delete last 10.033 us/op 5.7680 us/op 1.74
Set add up to 128 items then delete middle 6.7353 us/op 3.9869 us/op 1.69
OrderedSet add up to 128 items then delete middle 17.279 us/op 11.371 us/op 1.52
Set add up to 256 items then delete first 13.539 us/op 8.1167 us/op 1.67
OrderedSet add up to 256 items then delete first 19.289 us/op 12.191 us/op 1.58
Set add up to 256 items then delete last 13.347 us/op 7.3972 us/op 1.80
OrderedSet add up to 256 items then delete last 21.143 us/op 11.216 us/op 1.89
Set add up to 256 items then delete middle 12.926 us/op 7.1300 us/op 1.81
OrderedSet add up to 256 items then delete middle 48.679 us/op 32.648 us/op 1.49
transfer serialized Status (84 B) 3.0070 us/op 2.2080 us/op 1.36
copy serialized Status (84 B) 1.6010 us/op 1.5510 us/op 1.03
transfer serialized SignedVoluntaryExit (112 B) 3.1520 us/op 2.8380 us/op 1.11
copy serialized SignedVoluntaryExit (112 B) 1.6100 us/op 1.6760 us/op 0.96
transfer serialized ProposerSlashing (416 B) 4.2830 us/op 2.7190 us/op 1.58
copy serialized ProposerSlashing (416 B) 2.5590 us/op 1.7400 us/op 1.47
transfer serialized Attestation (485 B) 4.0910 us/op 2.6130 us/op 1.57
copy serialized Attestation (485 B) 2.2100 us/op 1.7780 us/op 1.24
transfer serialized AttesterSlashing (33232 B) 4.3690 us/op 2.7070 us/op 1.61
copy serialized AttesterSlashing (33232 B) 10.003 us/op 4.1850 us/op 2.39
transfer serialized Small SignedBeaconBlock (128000 B) 6.3770 us/op 2.9920 us/op 2.13
copy serialized Small SignedBeaconBlock (128000 B) 32.987 us/op 9.6560 us/op 3.42
transfer serialized Avg SignedBeaconBlock (200000 B) 6.6000 us/op 3.7420 us/op 1.76
copy serialized Avg SignedBeaconBlock (200000 B) 42.612 us/op 14.401 us/op 2.96
transfer serialized BlobsSidecar (524380 B) 7.4260 us/op 4.8140 us/op 1.54
copy serialized BlobsSidecar (524380 B) 225.13 us/op 78.007 us/op 2.89
transfer serialized Big SignedBeaconBlock (1000000 B) 6.2030 us/op 4.8370 us/op 1.28
copy serialized Big SignedBeaconBlock (1000000 B) 235.09 us/op 166.04 us/op 1.42
pass gossip attestations to forkchoice per slot 3.0491 ms/op 2.2639 ms/op 1.35
forkChoice updateHead vc 100000 bc 64 eq 0 550.89 us/op 332.22 us/op 1.66
forkChoice updateHead vc 600000 bc 64 eq 0 4.4652 ms/op 2.9883 ms/op 1.49
forkChoice updateHead vc 1000000 bc 64 eq 0 6.6240 ms/op 3.7346 ms/op 1.77
forkChoice updateHead vc 600000 bc 320 eq 0 3.4285 ms/op 2.3944 ms/op 1.43
forkChoice updateHead vc 600000 bc 1200 eq 0 3.3017 ms/op 2.3170 ms/op 1.43
forkChoice updateHead vc 600000 bc 7200 eq 0 3.9479 ms/op 2.2980 ms/op 1.72
forkChoice updateHead vc 600000 bc 64 eq 1000 11.856 ms/op 9.4327 ms/op 1.26
forkChoice updateHead vc 600000 bc 64 eq 10000 11.552 ms/op 9.3117 ms/op 1.24
forkChoice updateHead vc 600000 bc 64 eq 300000 25.275 ms/op 11.530 ms/op 2.19
computeDeltas 500000 validators 300 proto nodes 4.7729 ms/op 3.2827 ms/op 1.45
computeDeltas 500000 validators 1200 proto nodes 4.7334 ms/op 3.4081 ms/op 1.39
computeDeltas 500000 validators 7200 proto nodes 4.6343 ms/op 3.3157 ms/op 1.40
computeDeltas 750000 validators 300 proto nodes 6.6770 ms/op 4.9541 ms/op 1.35
computeDeltas 750000 validators 1200 proto nodes 6.6124 ms/op 4.9877 ms/op 1.33
computeDeltas 750000 validators 7200 proto nodes 6.9376 ms/op 4.9948 ms/op 1.39
computeDeltas 1400000 validators 300 proto nodes 12.344 ms/op 9.2545 ms/op 1.33
computeDeltas 1400000 validators 1200 proto nodes 12.933 ms/op 9.4817 ms/op 1.36
computeDeltas 1400000 validators 7200 proto nodes 13.879 ms/op 8.9167 ms/op 1.56
computeDeltas 2100000 validators 300 proto nodes 23.355 ms/op 14.099 ms/op 1.66
computeDeltas 2100000 validators 1200 proto nodes 21.795 ms/op 13.994 ms/op 1.56
computeDeltas 2100000 validators 7200 proto nodes 21.285 ms/op 13.943 ms/op 1.53
altair processAttestation - 250000 vs - 7PWei normalcase 2.8484 ms/op 1.7244 ms/op 1.65
altair processAttestation - 250000 vs - 7PWei worstcase 4.4951 ms/op 2.3826 ms/op 1.89
altair processAttestation - setStatus - 1/6 committees join 148.69 us/op 97.512 us/op 1.52
altair processAttestation - setStatus - 1/3 committees join 255.61 us/op 187.93 us/op 1.36
altair processAttestation - setStatus - 1/2 committees join 402.29 us/op 265.21 us/op 1.52
altair processAttestation - setStatus - 2/3 committees join 518.00 us/op 345.30 us/op 1.50
altair processAttestation - setStatus - 4/5 committees join 723.57 us/op 475.44 us/op 1.52
altair processAttestation - setStatus - 100% committees join 765.50 us/op 561.07 us/op 1.36
altair processBlock - 250000 vs - 7PWei normalcase 6.6972 ms/op 4.8590 ms/op 1.38
altair processBlock - 250000 vs - 7PWei normalcase hashState 47.788 ms/op 28.434 ms/op 1.68
altair processBlock - 250000 vs - 7PWei worstcase 44.651 ms/op 35.268 ms/op 1.27
altair processBlock - 250000 vs - 7PWei worstcase hashState 95.930 ms/op 81.194 ms/op 1.18
phase0 processBlock - 250000 vs - 7PWei normalcase 2.9418 ms/op 2.0702 ms/op 1.42
phase0 processBlock - 250000 vs - 7PWei worstcase 30.302 ms/op 25.431 ms/op 1.19
altair processEth1Data - 250000 vs - 7PWei normalcase 700.13 us/op 291.42 us/op 2.40
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 10.623 us/op 2.7950 us/op 3.80
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 61.100 us/op 17.882 us/op 3.42
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 15.723 us/op 10.369 us/op 1.52
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 10.218 us/op 4.8460 us/op 2.11
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 213.25 us/op 128.38 us/op 1.66
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3710 ms/op 851.85 us/op 1.61
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8607 ms/op 1.1453 ms/op 1.62
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8347 ms/op 1.0664 ms/op 1.72
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 5.4692 ms/op 2.9878 ms/op 1.83
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.6668 ms/op 1.1760 ms/op 1.42
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 6.1357 ms/op 2.8650 ms/op 2.14
Tree 40 250000 create 724.77 ms/op 355.02 ms/op 2.04
Tree 40 250000 get(125000) 166.40 ns/op 103.86 ns/op 1.60
Tree 40 250000 set(125000) 2.6046 us/op 1.0878 us/op 2.39
Tree 40 250000 toArray() 24.351 ms/op 12.145 ms/op 2.00
Tree 40 250000 iterate all - toArray() + loop 24.541 ms/op 12.741 ms/op 1.93
Tree 40 250000 iterate all - get(i) 64.707 ms/op 40.851 ms/op 1.58
Array 250000 create 4.4833 ms/op 2.3215 ms/op 1.93
Array 250000 clone - spread 2.4679 ms/op 1.1087 ms/op 2.23
Array 250000 get(125000) 0.47800 ns/op 0.55800 ns/op 0.86
Array 250000 set(125000) 0.52800 ns/op 0.57100 ns/op 0.92
Array 250000 iterate all - loop 90.815 us/op 72.799 us/op 1.25
phase0 afterProcessEpoch - 250000 vs - 7PWei 58.597 ms/op 38.987 ms/op 1.50
Array.fill - length 1000000 7.5727 ms/op 2.2377 ms/op 3.38
Array push - length 1000000 22.188 ms/op 14.132 ms/op 1.57
Array.get 0.32055 ns/op 0.25894 ns/op 1.24
Uint8Array.get 0.48083 ns/op 0.33991 ns/op 1.41
phase0 beforeProcessEpoch - 250000 vs - 7PWei 25.358 ms/op 12.887 ms/op 1.97
altair processEpoch - mainnet_e81889 417.82 ms/op 274.11 ms/op 1.52
mainnet_e81889 - altair beforeProcessEpoch 28.413 ms/op 14.803 ms/op 1.92
mainnet_e81889 - altair processJustificationAndFinalization 34.865 us/op 12.418 us/op 2.81
mainnet_e81889 - altair processInactivityUpdates 8.8046 ms/op 3.4306 ms/op 2.57
mainnet_e81889 - altair processRewardsAndPenalties 62.594 ms/op 57.339 ms/op 1.09
mainnet_e81889 - altair processRegistryUpdates 5.8830 us/op 2.6420 us/op 2.23
mainnet_e81889 - altair processSlashings 1.3860 us/op 823.00 ns/op 1.68
mainnet_e81889 - altair processEth1DataReset 1.3840 us/op 879.00 ns/op 1.57
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.4882 ms/op 1.6237 ms/op 1.53
mainnet_e81889 - altair processSlashingsReset 10.122 us/op 2.4220 us/op 4.18
mainnet_e81889 - altair processRandaoMixesReset 12.332 us/op 3.4820 us/op 3.54
mainnet_e81889 - altair processHistoricalRootsUpdate 1.6650 us/op 1.2750 us/op 1.31
mainnet_e81889 - altair processParticipationFlagUpdates 6.1610 us/op 2.0990 us/op 2.94
mainnet_e81889 - altair processSyncCommitteeUpdates 2.0160 us/op 815.00 ns/op 2.47
mainnet_e81889 - altair afterProcessEpoch 59.305 ms/op 42.315 ms/op 1.40
capella processEpoch - mainnet_e217614 1.3757 s/op 991.03 ms/op 1.39
mainnet_e217614 - capella beforeProcessEpoch 96.919 ms/op 67.642 ms/op 1.43
mainnet_e217614 - capella processJustificationAndFinalization 21.440 us/op 11.781 us/op 1.82
mainnet_e217614 - capella processInactivityUpdates 25.571 ms/op 11.049 ms/op 2.31
mainnet_e217614 - capella processRewardsAndPenalties 304.73 ms/op 249.99 ms/op 1.22
mainnet_e217614 - capella processRegistryUpdates 21.808 us/op 10.679 us/op 2.04
mainnet_e217614 - capella processSlashings 1.4050 us/op 832.00 ns/op 1.69
mainnet_e217614 - capella processEth1DataReset 1.1060 us/op 820.00 ns/op 1.35
mainnet_e217614 - capella processEffectiveBalanceUpdates 20.859 ms/op 3.2528 ms/op 6.41
mainnet_e217614 - capella processSlashingsReset 9.7510 us/op 3.0510 us/op 3.20
mainnet_e217614 - capella processRandaoMixesReset 8.5140 us/op 3.7490 us/op 2.27
mainnet_e217614 - capella processHistoricalRootsUpdate 1.1590 us/op 872.00 ns/op 1.33
mainnet_e217614 - capella processParticipationFlagUpdates 2.9750 us/op 1.8930 us/op 1.57
mainnet_e217614 - capella afterProcessEpoch 139.12 ms/op 101.08 ms/op 1.38
phase0 processEpoch - mainnet_e58758 476.55 ms/op 307.67 ms/op 1.55
mainnet_e58758 - phase0 beforeProcessEpoch 119.74 ms/op 58.171 ms/op 2.06
mainnet_e58758 - phase0 processJustificationAndFinalization 29.079 us/op 13.880 us/op 2.10
mainnet_e58758 - phase0 processRewardsAndPenalties 31.284 ms/op 26.391 ms/op 1.19
mainnet_e58758 - phase0 processRegistryUpdates 10.592 us/op 5.6690 us/op 1.87
mainnet_e58758 - phase0 processSlashings 1.5110 us/op 841.00 ns/op 1.80
mainnet_e58758 - phase0 processEth1DataReset 982.00 ns/op 928.00 ns/op 1.06
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.7904 ms/op 762.03 us/op 2.35
mainnet_e58758 - phase0 processSlashingsReset 5.7830 us/op 2.6180 us/op 2.21
mainnet_e58758 - phase0 processRandaoMixesReset 9.3380 us/op 5.5160 us/op 1.69
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1090 us/op 983.00 ns/op 1.13
mainnet_e58758 - phase0 processParticipationRecordUpdates 9.9470 us/op 4.1530 us/op 2.40
mainnet_e58758 - phase0 afterProcessEpoch 49.926 ms/op 36.714 ms/op 1.36
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.8152 ms/op 938.89 us/op 1.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 4.8461 ms/op 1.3412 ms/op 3.61
altair processInactivityUpdates - 250000 normalcase 24.919 ms/op 19.420 ms/op 1.28
altair processInactivityUpdates - 250000 worstcase 25.071 ms/op 17.684 ms/op 1.42
phase0 processRegistryUpdates - 250000 normalcase 11.121 us/op 3.0560 us/op 3.64
phase0 processRegistryUpdates - 250000 badcase_full_deposits 412.24 us/op 274.73 us/op 1.50
phase0 processRegistryUpdates - 250000 worstcase 0.5 144.27 ms/op 110.32 ms/op 1.31
altair processRewardsAndPenalties - 250000 normalcase 69.241 ms/op 48.589 ms/op 1.43
altair processRewardsAndPenalties - 250000 worstcase 51.904 ms/op 41.734 ms/op 1.24
phase0 getAttestationDeltas - 250000 normalcase 10.253 ms/op 6.4262 ms/op 1.60
phase0 getAttestationDeltas - 250000 worstcase 8.3192 ms/op 5.5333 ms/op 1.50
phase0 processSlashings - 250000 worstcase 111.46 us/op 92.821 us/op 1.20
altair processSyncCommitteeUpdates - 250000 155.55 ms/op 96.087 ms/op 1.62
BeaconState.hashTreeRoot - No change 367.00 ns/op 465.00 ns/op 0.79
BeaconState.hashTreeRoot - 1 full validator 122.86 us/op 121.68 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 1.2295 ms/op 1.1373 ms/op 1.08
BeaconState.hashTreeRoot - 512 full validator 14.489 ms/op 8.7281 ms/op 1.66
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 180.78 us/op 125.99 us/op 1.43
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.2566 ms/op 1.5190 ms/op 1.49
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 27.263 ms/op 18.806 ms/op 1.45
BeaconState.hashTreeRoot - 1 balances 142.08 us/op 89.538 us/op 1.59
BeaconState.hashTreeRoot - 32 balances 1.0573 ms/op 880.77 us/op 1.20
BeaconState.hashTreeRoot - 512 balances 8.7731 ms/op 6.8752 ms/op 1.28
BeaconState.hashTreeRoot - 250000 balances 175.91 ms/op 134.14 ms/op 1.31
aggregationBits - 2048 els - zipIndexesInBitList 31.109 us/op 19.117 us/op 1.63
byteArrayEquals 32 57.420 ns/op 48.143 ns/op 1.19
Buffer.compare 32 18.409 ns/op 16.363 ns/op 1.13
byteArrayEquals 1024 1.6861 us/op 1.2650 us/op 1.33
Buffer.compare 1024 29.589 ns/op 24.635 ns/op 1.20
byteArrayEquals 16384 26.816 us/op 20.094 us/op 1.33
Buffer.compare 16384 223.35 ns/op 210.92 ns/op 1.06
byteArrayEquals 123687377 200.60 ms/op 151.18 ms/op 1.33
Buffer.compare 123687377 8.0693 ms/op 3.8722 ms/op 2.08
byteArrayEquals 32 - diff last byte 53.732 ns/op 46.619 ns/op 1.15
Buffer.compare 32 - diff last byte 17.716 ns/op 16.547 ns/op 1.07
byteArrayEquals 1024 - diff last byte 1.6516 us/op 1.2569 us/op 1.31
Buffer.compare 1024 - diff last byte 28.480 ns/op 23.344 ns/op 1.22
byteArrayEquals 16384 - diff last byte 26.560 us/op 19.951 us/op 1.33
Buffer.compare 16384 - diff last byte 189.09 ns/op 177.43 ns/op 1.07
byteArrayEquals 123687377 - diff last byte 198.44 ms/op 149.46 ms/op 1.33
Buffer.compare 123687377 - diff last byte 7.8750 ms/op 3.8172 ms/op 2.06
byteArrayEquals 32 - random bytes 5.4050 ns/op 4.8700 ns/op 1.11
Buffer.compare 32 - random bytes 18.449 ns/op 16.652 ns/op 1.11
byteArrayEquals 1024 - random bytes 5.3890 ns/op 4.8710 ns/op 1.11
Buffer.compare 1024 - random bytes 18.202 ns/op 16.677 ns/op 1.09
byteArrayEquals 16384 - random bytes 5.3960 ns/op 4.8330 ns/op 1.12
Buffer.compare 16384 - random bytes 18.084 ns/op 16.709 ns/op 1.08
byteArrayEquals 123687377 - random bytes 6.6300 ns/op 7.6900 ns/op 0.86
Buffer.compare 123687377 - random bytes 19.830 ns/op 19.720 ns/op 1.01
regular array get 100000 times 34.518 us/op 30.994 us/op 1.11
wrappedArray get 100000 times 34.576 us/op 31.057 us/op 1.11
arrayWithProxy get 100000 times 13.368 ms/op 9.8019 ms/op 1.36
ssz.Root.equals 47.645 ns/op 43.174 ns/op 1.10
byteArrayEquals 47.441 ns/op 42.796 ns/op 1.11
Buffer.compare 11.017 ns/op 9.7020 ns/op 1.14
processSlot - 1 slots 15.081 us/op 11.650 us/op 1.29
processSlot - 32 slots 2.5396 ms/op 1.8462 ms/op 1.38
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 39.137 ms/op 38.050 ms/op 1.03
getCommitteeAssignments - req 1 vs - 250000 vc 2.3434 ms/op 1.7756 ms/op 1.32
getCommitteeAssignments - req 100 vs - 250000 vc 4.5299 ms/op 3.5444 ms/op 1.28
getCommitteeAssignments - req 1000 vs - 250000 vc 4.8552 ms/op 3.7008 ms/op 1.31
findModifiedValidators - 10000 modified validators 327.35 ms/op 220.24 ms/op 1.49
findModifiedValidators - 1000 modified validators 272.31 ms/op 139.34 ms/op 1.95
findModifiedValidators - 100 modified validators 249.70 ms/op 139.25 ms/op 1.79
findModifiedValidators - 10 modified validators 200.34 ms/op 131.79 ms/op 1.52
findModifiedValidators - 1 modified validators 222.09 ms/op 124.90 ms/op 1.78
findModifiedValidators - no difference 201.04 ms/op 151.00 ms/op 1.33
compare ViewDUs 3.5968 s/op 3.2692 s/op 1.10
compare each validator Uint8Array 1.7257 s/op 1.6863 s/op 1.02
compare ViewDU to Uint8Array 1.2390 s/op 737.08 ms/op 1.68
migrate state 1000000 validators, 24 modified, 0 new 857.39 ms/op 679.76 ms/op 1.26
migrate state 1000000 validators, 1700 modified, 1000 new 1.0685 s/op 918.68 ms/op 1.16
migrate state 1000000 validators, 3400 modified, 2000 new 1.2630 s/op 1.2131 s/op 1.04
migrate state 1500000 validators, 24 modified, 0 new 830.15 ms/op 747.01 ms/op 1.11
migrate state 1500000 validators, 1700 modified, 1000 new 999.76 ms/op 977.36 ms/op 1.02
migrate state 1500000 validators, 3400 modified, 2000 new 1.2736 s/op 1.1608 s/op 1.10
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.6900 ns/op 5.7500 ns/op 0.82
state getBlockRootAtSlot - 250000 vs - 7PWei 578.65 ns/op 1.0498 us/op 0.55
computeProposers - vc 250000 7.3743 ms/op 6.7175 ms/op 1.10
computeEpochShuffling - vc 250000 41.498 ms/op 33.506 ms/op 1.24
getNextSyncCommittee - vc 250000 144.26 ms/op 105.61 ms/op 1.37
computeSigningRoot for AttestationData 30.066 us/op 21.716 us/op 1.38
hash AttestationData serialized data then Buffer.toString(base64) 1.5919 us/op 1.1725 us/op 1.36
toHexString serialized data 914.69 ns/op 787.62 ns/op 1.16
Buffer.toString(base64) 174.86 ns/op 127.43 ns/op 1.37
nodejs block root to RootHex using toHex 166.07 ns/op 115.32 ns/op 1.44
nodejs block root to RootHex using toRootHex 103.22 ns/op 75.014 ns/op 1.38
browser block root to RootHex using the deprecated toHexString 241.62 ns/op 210.16 ns/op 1.15
browser block root to RootHex using toHex 191.19 ns/op 167.65 ns/op 1.14
browser block root to RootHex using toRootHex 166.19 ns/op 146.65 ns/op 1.13

by benchmarkbot/action

@nflaig
Copy link
Member

nflaig commented Jan 22, 2025

can we go with ChainSafe/ssz#440 instead?

@matthewkeil
Copy link
Member Author

can we go with ChainSafe/ssz#440 instead?

Just DM'd @wemeetagain about that. I think that is the safer route honestly because its not 100 deterministic to do it this way

@nflaig
Copy link
Member

nflaig commented Jan 23, 2025

Closed in favor of #7393

@nflaig nflaig closed this Jan 23, 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.

2 participants