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

chore: portable blst #7164

Merged
merged 5 commits into from
Oct 22, 2024
Merged

chore: portable blst #7164

merged 5 commits into from
Oct 22, 2024

Conversation

matthewkeil
Copy link
Member

@matthewkeil matthewkeil commented Oct 15, 2024

Motivation

Switch to portable build of blst-ts

Closes #7074

@matthewkeil matthewkeil added the status-do-not-merge Merging this issue will break the build. Do not merge! label Oct 15, 2024
Copy link

codecov bot commented Oct 15, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 49.21%. Comparing base (0e4ea98) to head (d98ba56).
Report is 4 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7164      +/-   ##
============================================
- Coverage     49.21%   49.21%   -0.01%     
============================================
  Files           598      598              
  Lines         39794    39794              
  Branches       2093     2087       -6     
============================================
- Hits          19584    19583       -1     
- Misses        20170    20171       +1     
  Partials         40       40              

Copy link
Contributor

github-actions bot commented Oct 16, 2024

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 4dd6e71 Previous: e770ebe Ratio
Array.fill - length 1000000 2.6200 ms/op 9.9002 ms/op 0.26
findModifiedValidators - 1000 modified validators 219.98 ms/op 691.20 ms/op 0.32
Full benchmark results
Benchmark suite Current: 4dd6e71 Previous: e770ebe Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.8878 ms/op 3.0636 ms/op 0.62
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 51.897 us/op 91.850 us/op 0.57
BLS verify - blst 865.91 us/op 1.0738 ms/op 0.81
BLS verifyMultipleSignatures 3 - blst 1.4540 ms/op 1.5846 ms/op 0.92
BLS verifyMultipleSignatures 8 - blst 1.8448 ms/op 2.2404 ms/op 0.82
BLS verifyMultipleSignatures 32 - blst 4.4870 ms/op 5.9507 ms/op 0.75
BLS verifyMultipleSignatures 64 - blst 8.7604 ms/op 10.883 ms/op 0.80
BLS verifyMultipleSignatures 128 - blst 17.041 ms/op 19.801 ms/op 0.86
BLS deserializing 10000 signatures 653.78 ms/op 713.09 ms/op 0.92
BLS deserializing 100000 signatures 6.3597 s/op 7.7215 s/op 0.82
BLS verifyMultipleSignatures - same message - 3 - blst 924.73 us/op 1.0745 ms/op 0.86
BLS verifyMultipleSignatures - same message - 8 - blst 1.0983 ms/op 1.1816 ms/op 0.93
BLS verifyMultipleSignatures - same message - 32 - blst 1.7116 ms/op 1.9282 ms/op 0.89
BLS verifyMultipleSignatures - same message - 64 - blst 2.5622 ms/op 2.9769 ms/op 0.86
BLS verifyMultipleSignatures - same message - 128 - blst 4.1424 ms/op 4.8764 ms/op 0.85
BLS aggregatePubkeys 32 - blst 18.060 us/op 21.415 us/op 0.84
BLS aggregatePubkeys 128 - blst 63.724 us/op 76.754 us/op 0.83
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 50.271 ms/op 114.02 ms/op 0.44
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 50.634 ms/op 125.74 ms/op 0.40
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 51.187 ms/op 76.103 ms/op 0.67
getSlashingsAndExits - default max 100.56 us/op 264.88 us/op 0.38
getSlashingsAndExits - 2k 358.16 us/op 593.81 us/op 0.60
proposeBlockBody type=full, size=empty 5.5069 ms/op 11.272 ms/op 0.49
isKnown best case - 1 super set check 627.00 ns/op 818.00 ns/op 0.77
isKnown normal case - 2 super set checks 657.00 ns/op 900.00 ns/op 0.73
isKnown worse case - 16 super set checks 716.00 ns/op 992.00 ns/op 0.72
InMemoryCheckpointStateCache - add get delete 3.4090 us/op 4.9170 us/op 0.69
updateUnfinalizedPubkeys - updating 10 pubkeys 1.2083 ms/op 2.4370 ms/op 0.50
updateUnfinalizedPubkeys - updating 100 pubkeys 3.5132 ms/op 5.3153 ms/op 0.66
updateUnfinalizedPubkeys - updating 1000 pubkeys 39.597 ms/op 66.445 ms/op 0.60
validate api signedAggregateAndProof - struct 1.5145 ms/op 1.7088 ms/op 0.89
validate gossip signedAggregateAndProof - struct 1.5209 ms/op 1.6301 ms/op 0.93
batch validate gossip attestation - vc 640000 - chunk 32 132.51 us/op 168.13 us/op 0.79
batch validate gossip attestation - vc 640000 - chunk 64 120.71 us/op 156.91 us/op 0.77
batch validate gossip attestation - vc 640000 - chunk 128 111.66 us/op 133.26 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 256 104.64 us/op 125.27 us/op 0.84
pickEth1Vote - no votes 850.55 us/op 1.2231 ms/op 0.70
pickEth1Vote - max votes 5.2396 ms/op 7.4056 ms/op 0.71
pickEth1Vote - Eth1Data hashTreeRoot value x2048 18.667 ms/op 13.535 ms/op 1.38
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 21.990 ms/op 17.813 ms/op 1.23
pickEth1Vote - Eth1Data fastSerialize value x2048 443.04 us/op 534.70 us/op 0.83
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.9224 ms/op 3.3890 ms/op 1.45
bytes32 toHexString 849.00 ns/op 673.00 ns/op 1.26
bytes32 Buffer.toString(hex) 505.00 ns/op 263.00 ns/op 1.92
bytes32 Buffer.toString(hex) from Uint8Array 654.00 ns/op 489.00 ns/op 1.34
bytes32 Buffer.toString(hex) + 0x 509.00 ns/op 271.00 ns/op 1.88
Object access 1 prop 0.34100 ns/op 0.18100 ns/op 1.88
Map access 1 prop 0.33200 ns/op 0.14600 ns/op 2.27
Object get x1000 5.2110 ns/op 6.2470 ns/op 0.83
Map get x1000 5.7850 ns/op 6.4080 ns/op 0.90
Object set x1000 26.807 ns/op 35.792 ns/op 0.75
Map set x1000 19.244 ns/op 26.680 ns/op 0.72
Return object 10000 times 0.29620 ns/op 0.30570 ns/op 0.97
Throw Error 10000 times 2.8014 us/op 3.4559 us/op 0.81
toHex 117.84 ns/op 174.19 ns/op 0.68
Buffer.from 104.73 ns/op 154.92 ns/op 0.68
shared Buffer 69.718 ns/op 102.16 ns/op 0.68
fastMsgIdFn sha256 / 200 bytes 2.1480 us/op 2.3100 us/op 0.93
fastMsgIdFn h32 xxhash / 200 bytes 454.00 ns/op 267.00 ns/op 1.70
fastMsgIdFn h64 xxhash / 200 bytes 509.00 ns/op 285.00 ns/op 1.79
fastMsgIdFn sha256 / 1000 bytes 5.9820 us/op 7.7010 us/op 0.78
fastMsgIdFn h32 xxhash / 1000 bytes 550.00 ns/op 404.00 ns/op 1.36
fastMsgIdFn h64 xxhash / 1000 bytes 567.00 ns/op 355.00 ns/op 1.60
fastMsgIdFn sha256 / 10000 bytes 49.936 us/op 65.714 us/op 0.76
fastMsgIdFn h32 xxhash / 10000 bytes 1.9870 us/op 1.9440 us/op 1.02
fastMsgIdFn h64 xxhash / 10000 bytes 1.3330 us/op 1.2670 us/op 1.05
send data - 1000 256B messages 10.552 ms/op 14.003 ms/op 0.75
send data - 1000 512B messages 14.198 ms/op 17.423 ms/op 0.81
send data - 1000 1024B messages 25.270 ms/op 27.334 ms/op 0.92
send data - 1000 1200B messages 22.700 ms/op 35.111 ms/op 0.65
send data - 1000 2048B messages 32.406 ms/op 34.126 ms/op 0.95
send data - 1000 4096B messages 32.357 ms/op 33.561 ms/op 0.96
send data - 1000 16384B messages 76.160 ms/op 71.231 ms/op 1.07
send data - 1000 65536B messages 273.61 ms/op 213.49 ms/op 1.28
enrSubnets - fastDeserialize 64 bits 1.5240 us/op 1.0210 us/op 1.49
enrSubnets - ssz BitVector 64 bits 665.00 ns/op 343.00 ns/op 1.94
enrSubnets - fastDeserialize 4 bits 396.00 ns/op 142.00 ns/op 2.79
enrSubnets - ssz BitVector 4 bits 579.00 ns/op 351.00 ns/op 1.65
prioritizePeers score -10:0 att 32-0.1 sync 2-0 120.35 us/op 148.11 us/op 0.81
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 143.67 us/op 145.66 us/op 0.99
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 288.52 us/op 287.59 us/op 1.00
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 477.08 us/op 415.45 us/op 1.15
prioritizePeers score 0:0 att 64-1 sync 4-1 693.85 us/op 819.88 us/op 0.85
array of 16000 items push then shift 1.3608 us/op 1.7073 us/op 0.80
LinkedList of 16000 items push then shift 8.8630 ns/op 7.6520 ns/op 1.16
array of 16000 items push then pop 139.77 ns/op 141.98 ns/op 0.98
LinkedList of 16000 items push then pop 6.6730 ns/op 7.3140 ns/op 0.91
array of 24000 items push then shift 1.9473 us/op 2.4481 us/op 0.80
LinkedList of 24000 items push then shift 6.8030 ns/op 7.3620 ns/op 0.92
array of 24000 items push then pop 182.91 ns/op 167.29 ns/op 1.09
LinkedList of 24000 items push then pop 6.5940 ns/op 7.5260 ns/op 0.88
intersect bitArray bitLen 8 5.3920 ns/op 6.4800 ns/op 0.83
intersect array and set length 8 56.492 ns/op 54.737 ns/op 1.03
intersect bitArray bitLen 128 25.904 ns/op 30.004 ns/op 0.86
intersect array and set length 128 836.72 ns/op 948.01 ns/op 0.88
bitArray.getTrueBitIndexes() bitLen 128 2.9950 us/op 2.1980 us/op 1.36
bitArray.getTrueBitIndexes() bitLen 248 3.9710 us/op 3.8260 us/op 1.04
bitArray.getTrueBitIndexes() bitLen 512 8.7740 us/op 7.6400 us/op 1.15
Buffer.concat 32 items 1.1400 us/op 975.00 ns/op 1.17
Uint8Array.set 32 items 1.5820 us/op 1.6690 us/op 0.95
Buffer.copy 1.6230 us/op 1.8630 us/op 0.87
Uint8Array.set - with subarray 2.1030 us/op 2.8630 us/op 0.73
Uint8Array.set - without subarray 1.7740 us/op 1.7900 us/op 0.99
getUint32 - dataview 508.00 ns/op 317.00 ns/op 1.60
getUint32 - manual 449.00 ns/op 274.00 ns/op 1.64
Set add up to 64 items then delete first 1.8857 us/op 2.7816 us/op 0.68
OrderedSet add up to 64 items then delete first 3.0137 us/op 4.4530 us/op 0.68
Set add up to 64 items then delete last 2.1241 us/op 3.2540 us/op 0.65
OrderedSet add up to 64 items then delete last 3.1938 us/op 5.2469 us/op 0.61
Set add up to 64 items then delete middle 2.0750 us/op 3.3686 us/op 0.62
OrderedSet add up to 64 items then delete middle 4.4903 us/op 6.7961 us/op 0.66
Set add up to 128 items then delete first 4.0659 us/op 7.0610 us/op 0.58
OrderedSet add up to 128 items then delete first 6.3547 us/op 10.614 us/op 0.60
Set add up to 128 items then delete last 4.1056 us/op 7.5149 us/op 0.55
OrderedSet add up to 128 items then delete last 8.5822 us/op 11.427 us/op 0.75
Set add up to 128 items then delete middle 4.0033 us/op 6.6953 us/op 0.60
OrderedSet add up to 128 items then delete middle 14.664 us/op 17.790 us/op 0.82
Set add up to 256 items then delete first 8.2414 us/op 12.877 us/op 0.64
OrderedSet add up to 256 items then delete first 12.912 us/op 20.105 us/op 0.64
Set add up to 256 items then delete last 7.7283 us/op 11.839 us/op 0.65
OrderedSet add up to 256 items then delete last 11.875 us/op 19.564 us/op 0.61
Set add up to 256 items then delete middle 7.7048 us/op 13.432 us/op 0.57
OrderedSet add up to 256 items then delete middle 34.797 us/op 49.204 us/op 0.71
transfer serialized Status (84 B) 1.3840 us/op 1.6120 us/op 0.86
copy serialized Status (84 B) 1.4870 us/op 1.4640 us/op 1.02
transfer serialized SignedVoluntaryExit (112 B) 1.6690 us/op 1.8160 us/op 0.92
copy serialized SignedVoluntaryExit (112 B) 1.4610 us/op 1.4710 us/op 0.99
transfer serialized ProposerSlashing (416 B) 2.0620 us/op 2.0400 us/op 1.01
copy serialized ProposerSlashing (416 B) 2.1180 us/op 2.0790 us/op 1.02
transfer serialized Attestation (485 B) 1.6290 us/op 2.2490 us/op 0.72
copy serialized Attestation (485 B) 1.7070 us/op 2.1450 us/op 0.80
transfer serialized AttesterSlashing (33232 B) 1.8500 us/op 3.2570 us/op 0.57
copy serialized AttesterSlashing (33232 B) 5.6450 us/op 9.2150 us/op 0.61
transfer serialized Small SignedBeaconBlock (128000 B) 3.8420 us/op 2.8850 us/op 1.33
copy serialized Small SignedBeaconBlock (128000 B) 17.095 us/op 26.827 us/op 0.64
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2070 us/op 4.1130 us/op 0.78
copy serialized Avg SignedBeaconBlock (200000 B) 17.281 us/op 41.682 us/op 0.41
transfer serialized BlobsSidecar (524380 B) 3.1620 us/op 4.4090 us/op 0.72
copy serialized BlobsSidecar (524380 B) 78.452 us/op 189.41 us/op 0.41
transfer serialized Big SignedBeaconBlock (1000000 B) 3.7390 us/op 3.3650 us/op 1.11
copy serialized Big SignedBeaconBlock (1000000 B) 143.47 us/op 196.14 us/op 0.73
pass gossip attestations to forkchoice per slot 2.4341 ms/op 3.3192 ms/op 0.73
forkChoice updateHead vc 100000 bc 64 eq 0 379.29 us/op 791.05 us/op 0.48
forkChoice updateHead vc 600000 bc 64 eq 0 2.2876 ms/op 4.3985 ms/op 0.52
forkChoice updateHead vc 1000000 bc 64 eq 0 3.8299 ms/op 5.8886 ms/op 0.65
forkChoice updateHead vc 600000 bc 320 eq 0 2.3014 ms/op 3.7710 ms/op 0.61
forkChoice updateHead vc 600000 bc 1200 eq 0 2.3906 ms/op 3.3937 ms/op 0.70
forkChoice updateHead vc 600000 bc 7200 eq 0 2.7877 ms/op 4.5130 ms/op 0.62
forkChoice updateHead vc 600000 bc 64 eq 1000 9.3769 ms/op 10.833 ms/op 0.87
forkChoice updateHead vc 600000 bc 64 eq 10000 9.2162 ms/op 11.179 ms/op 0.82
forkChoice updateHead vc 600000 bc 64 eq 300000 11.303 ms/op 28.298 ms/op 0.40
computeDeltas 500000 validators 300 proto nodes 3.5102 ms/op 5.1417 ms/op 0.68
computeDeltas 500000 validators 1200 proto nodes 3.4727 ms/op 4.7903 ms/op 0.72
computeDeltas 500000 validators 7200 proto nodes 3.5134 ms/op 4.5435 ms/op 0.77
computeDeltas 750000 validators 300 proto nodes 5.1950 ms/op 6.7567 ms/op 0.77
computeDeltas 750000 validators 1200 proto nodes 6.3204 ms/op 7.4434 ms/op 0.85
computeDeltas 750000 validators 7200 proto nodes 6.1153 ms/op 7.3717 ms/op 0.83
computeDeltas 1400000 validators 300 proto nodes 10.133 ms/op 13.885 ms/op 0.73
computeDeltas 1400000 validators 1200 proto nodes 9.7326 ms/op 17.032 ms/op 0.57
computeDeltas 1400000 validators 7200 proto nodes 9.6227 ms/op 18.813 ms/op 0.51
computeDeltas 2100000 validators 300 proto nodes 14.689 ms/op 33.918 ms/op 0.43
computeDeltas 2100000 validators 1200 proto nodes 19.306 ms/op 27.336 ms/op 0.71
computeDeltas 2100000 validators 7200 proto nodes 18.340 ms/op 28.964 ms/op 0.63
altair processAttestation - 250000 vs - 7PWei normalcase 3.9728 ms/op 3.9762 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei worstcase 2.9993 ms/op 6.4071 ms/op 0.47
altair processAttestation - setStatus - 1/6 committees join 78.010 us/op 202.13 us/op 0.39
altair processAttestation - setStatus - 1/3 committees join 180.26 us/op 404.56 us/op 0.45
altair processAttestation - setStatus - 1/2 committees join 249.59 us/op 471.42 us/op 0.53
altair processAttestation - setStatus - 2/3 committees join 355.26 us/op 746.72 us/op 0.48
altair processAttestation - setStatus - 4/5 committees join 460.49 us/op 1.1408 ms/op 0.40
altair processAttestation - setStatus - 100% committees join 564.83 us/op 1.0651 ms/op 0.53
altair processBlock - 250000 vs - 7PWei normalcase 5.2621 ms/op 6.9669 ms/op 0.76
altair processBlock - 250000 vs - 7PWei normalcase hashState 25.381 ms/op 33.782 ms/op 0.75
altair processBlock - 250000 vs - 7PWei worstcase 34.421 ms/op 47.346 ms/op 0.73
altair processBlock - 250000 vs - 7PWei worstcase hashState 87.222 ms/op 100.59 ms/op 0.87
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5683 ms/op 3.6223 ms/op 0.43
phase0 processBlock - 250000 vs - 7PWei worstcase 23.334 ms/op 29.756 ms/op 0.78
altair processEth1Data - 250000 vs - 7PWei normalcase 265.61 us/op 702.29 us/op 0.38
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.1590 us/op 10.976 us/op 0.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 33.204 us/op 55.218 us/op 0.60
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.7980 us/op 18.172 us/op 0.54
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.8600 us/op 11.272 us/op 0.70
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 133.61 us/op 216.78 us/op 0.62
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 945.57 us/op 1.4649 ms/op 0.65
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.1924 ms/op 1.9870 ms/op 0.60
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.1616 ms/op 2.5543 ms/op 0.45
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.0892 ms/op 7.7393 ms/op 0.40
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.1920 ms/op 2.5573 ms/op 0.47
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.5105 ms/op 7.9534 ms/op 0.44
Tree 40 250000 create 204.79 ms/op 679.26 ms/op 0.30
Tree 40 250000 get(125000) 120.20 ns/op 204.75 ns/op 0.59
Tree 40 250000 set(125000) 556.70 ns/op 1.9631 us/op 0.28
Tree 40 250000 toArray() 11.622 ms/op 28.250 ms/op 0.41
Tree 40 250000 iterate all - toArray() + loop 11.098 ms/op 27.178 ms/op 0.41
Tree 40 250000 iterate all - get(i) 43.884 ms/op 71.030 ms/op 0.62
Array 250000 create 2.3231 ms/op 5.1031 ms/op 0.46
Array 250000 clone - spread 1.2283 ms/op 6.1742 ms/op 0.20
Array 250000 get(125000) 0.62700 ns/op 0.61200 ns/op 1.02
Array 250000 set(125000) 0.61000 ns/op 0.61300 ns/op 1.00
Array 250000 iterate all - loop 78.119 us/op 139.57 us/op 0.56
phase0 afterProcessEpoch - 250000 vs - 7PWei 45.778 ms/op 58.801 ms/op 0.78
Array.fill - length 1000000 2.6200 ms/op 9.9002 ms/op 0.26
Array push - length 1000000 16.960 ms/op 30.755 ms/op 0.55
Array.get 0.26462 ns/op 0.39210 ns/op 0.67
Uint8Array.get 0.34157 ns/op 0.51082 ns/op 0.67
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.822 ms/op 27.588 ms/op 0.46
altair processEpoch - mainnet_e81889 261.75 ms/op 470.22 ms/op 0.56
mainnet_e81889 - altair beforeProcessEpoch 16.547 ms/op 29.913 ms/op 0.55
mainnet_e81889 - altair processJustificationAndFinalization 9.9930 us/op 26.904 us/op 0.37
mainnet_e81889 - altair processInactivityUpdates 3.8239 ms/op 9.8539 ms/op 0.39
mainnet_e81889 - altair processRewardsAndPenalties 51.387 ms/op 67.041 ms/op 0.77
mainnet_e81889 - altair processRegistryUpdates 2.0870 us/op 6.6290 us/op 0.31
mainnet_e81889 - altair processSlashings 735.00 ns/op 1.6340 us/op 0.45
mainnet_e81889 - altair processEth1DataReset 672.00 ns/op 1.2420 us/op 0.54
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1595 ms/op 3.1152 ms/op 0.37
mainnet_e81889 - altair processSlashingsReset 2.5500 us/op 8.7630 us/op 0.29
mainnet_e81889 - altair processRandaoMixesReset 2.7590 us/op 16.427 us/op 0.17
mainnet_e81889 - altair processHistoricalRootsUpdate 872.00 ns/op 1.7420 us/op 0.50
mainnet_e81889 - altair processParticipationFlagUpdates 2.2100 us/op 6.9110 us/op 0.32
mainnet_e81889 - altair processSyncCommitteeUpdates 588.00 ns/op 1.2120 us/op 0.49
mainnet_e81889 - altair afterProcessEpoch 42.547 ms/op 61.795 ms/op 0.69
capella processEpoch - mainnet_e217614 841.75 ms/op 1.2931 s/op 0.65
mainnet_e217614 - capella beforeProcessEpoch 73.389 ms/op 77.734 ms/op 0.94
mainnet_e217614 - capella processJustificationAndFinalization 18.349 us/op 24.998 us/op 0.73
mainnet_e217614 - capella processInactivityUpdates 15.155 ms/op 21.076 ms/op 0.72
mainnet_e217614 - capella processRewardsAndPenalties 224.90 ms/op 228.48 ms/op 0.98
mainnet_e217614 - capella processRegistryUpdates 10.590 us/op 14.840 us/op 0.71
mainnet_e217614 - capella processSlashings 715.00 ns/op 761.00 ns/op 0.94
mainnet_e217614 - capella processEth1DataReset 655.00 ns/op 613.00 ns/op 1.07
mainnet_e217614 - capella processEffectiveBalanceUpdates 6.0830 ms/op 15.560 ms/op 0.39
mainnet_e217614 - capella processSlashingsReset 2.8730 us/op 10.485 us/op 0.27
mainnet_e217614 - capella processRandaoMixesReset 4.2970 us/op 10.952 us/op 0.39
mainnet_e217614 - capella processHistoricalRootsUpdate 1.5400 us/op 1.1780 us/op 1.31
mainnet_e217614 - capella processParticipationFlagUpdates 2.0420 us/op 4.5050 us/op 0.45
mainnet_e217614 - capella afterProcessEpoch 104.47 ms/op 134.14 ms/op 0.78
phase0 processEpoch - mainnet_e58758 267.45 ms/op 385.26 ms/op 0.69
mainnet_e58758 - phase0 beforeProcessEpoch 68.213 ms/op 83.353 ms/op 0.82
mainnet_e58758 - phase0 processJustificationAndFinalization 18.322 us/op 20.631 us/op 0.89
mainnet_e58758 - phase0 processRewardsAndPenalties 28.898 ms/op 36.434 ms/op 0.79
mainnet_e58758 - phase0 processRegistryUpdates 6.7780 us/op 10.496 us/op 0.65
mainnet_e58758 - phase0 processSlashings 819.00 ns/op 524.00 ns/op 1.56
mainnet_e58758 - phase0 processEth1DataReset 856.00 ns/op 455.00 ns/op 1.88
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 875.61 us/op 1.3275 ms/op 0.66
mainnet_e58758 - phase0 processSlashingsReset 2.9520 us/op 5.3510 us/op 0.55
mainnet_e58758 - phase0 processRandaoMixesReset 4.3100 us/op 6.5400 us/op 0.66
mainnet_e58758 - phase0 processHistoricalRootsUpdate 667.00 ns/op 646.00 ns/op 1.03
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.6190 us/op 3.5590 us/op 1.30
mainnet_e58758 - phase0 afterProcessEpoch 35.016 ms/op 47.496 ms/op 0.74
phase0 processEffectiveBalanceUpdates - 250000 normalcase 958.25 us/op 1.6974 ms/op 0.56
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.8388 ms/op 2.7565 ms/op 0.67
altair processInactivityUpdates - 250000 normalcase 16.727 ms/op 18.287 ms/op 0.91
altair processInactivityUpdates - 250000 worstcase 17.320 ms/op 18.815 ms/op 0.92
phase0 processRegistryUpdates - 250000 normalcase 6.3920 us/op 12.920 us/op 0.49
phase0 processRegistryUpdates - 250000 badcase_full_deposits 310.25 us/op 347.93 us/op 0.89
phase0 processRegistryUpdates - 250000 worstcase 0.5 126.42 ms/op 140.33 ms/op 0.90
altair processRewardsAndPenalties - 250000 normalcase 44.380 ms/op 42.943 ms/op 1.03
altair processRewardsAndPenalties - 250000 worstcase 40.752 ms/op 46.425 ms/op 0.88
phase0 getAttestationDeltas - 250000 normalcase 8.0439 ms/op 11.983 ms/op 0.67
phase0 getAttestationDeltas - 250000 worstcase 6.6858 ms/op 9.4677 ms/op 0.71
phase0 processSlashings - 250000 worstcase 97.824 us/op 152.98 us/op 0.64
altair processSyncCommitteeUpdates - 250000 110.48 ms/op 155.77 ms/op 0.71
BeaconState.hashTreeRoot - No change 455.00 ns/op 310.00 ns/op 1.47
BeaconState.hashTreeRoot - 1 full validator 127.32 us/op 165.58 us/op 0.77
BeaconState.hashTreeRoot - 32 full validator 1.4816 ms/op 1.1547 ms/op 1.28
BeaconState.hashTreeRoot - 512 full validator 13.153 ms/op 13.730 ms/op 0.96
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 173.85 us/op 181.88 us/op 0.96
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.1251 ms/op 2.0635 ms/op 1.03
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 27.619 ms/op 27.221 ms/op 1.01
BeaconState.hashTreeRoot - 1 balances 78.706 us/op 122.44 us/op 0.64
BeaconState.hashTreeRoot - 32 balances 758.75 us/op 1.1063 ms/op 0.69
BeaconState.hashTreeRoot - 512 balances 7.4594 ms/op 8.4861 ms/op 0.88
BeaconState.hashTreeRoot - 250000 balances 175.14 ms/op 197.45 ms/op 0.89
aggregationBits - 2048 els - zipIndexesInBitList 29.851 us/op 36.243 us/op 0.82
byteArrayEquals 32 49.788 ns/op 54.805 ns/op 0.91
Buffer.compare 32 17.299 ns/op 18.127 ns/op 0.95
byteArrayEquals 1024 1.2989 us/op 1.6837 us/op 0.77
Buffer.compare 1024 24.212 ns/op 26.658 ns/op 0.91
byteArrayEquals 16384 20.205 us/op 26.771 us/op 0.75
Buffer.compare 16384 184.80 ns/op 212.17 ns/op 0.87
byteArrayEquals 123687377 157.63 ms/op 203.63 ms/op 0.77
Buffer.compare 123687377 8.5568 ms/op 10.652 ms/op 0.80
byteArrayEquals 32 - diff last byte 50.776 ns/op 56.771 ns/op 0.89
Buffer.compare 32 - diff last byte 16.298 ns/op 20.393 ns/op 0.80
byteArrayEquals 1024 - diff last byte 1.3353 us/op 1.7485 us/op 0.76
Buffer.compare 1024 - diff last byte 24.801 ns/op 28.152 ns/op 0.88
byteArrayEquals 16384 - diff last byte 20.499 us/op 27.022 us/op 0.76
Buffer.compare 16384 - diff last byte 208.92 ns/op 208.12 ns/op 1.00
byteArrayEquals 123687377 - diff last byte 157.85 ms/op 198.36 ms/op 0.80
Buffer.compare 123687377 - diff last byte 5.9902 ms/op 8.4526 ms/op 0.71
byteArrayEquals 32 - random bytes 4.9800 ns/op 5.5410 ns/op 0.90
Buffer.compare 32 - random bytes 15.940 ns/op 18.059 ns/op 0.88
byteArrayEquals 1024 - random bytes 4.9370 ns/op 5.3730 ns/op 0.92
Buffer.compare 1024 - random bytes 15.776 ns/op 17.634 ns/op 0.89
byteArrayEquals 16384 - random bytes 4.9940 ns/op 5.3360 ns/op 0.94
Buffer.compare 16384 - random bytes 15.754 ns/op 17.559 ns/op 0.90
byteArrayEquals 123687377 - random bytes 8.0800 ns/op 6.5500 ns/op 1.23
Buffer.compare 123687377 - random bytes 18.570 ns/op 18.900 ns/op 0.98
regular array get 100000 times 31.266 us/op 33.043 us/op 0.95
wrappedArray get 100000 times 31.209 us/op 41.511 us/op 0.75
arrayWithProxy get 100000 times 10.263 ms/op 13.970 ms/op 0.73
ssz.Root.equals 44.672 ns/op 45.760 ns/op 0.98
byteArrayEquals 44.245 ns/op 45.355 ns/op 0.98
Buffer.compare 9.3550 ns/op 10.362 ns/op 0.90
processSlot - 1 slots 12.997 us/op 13.866 us/op 0.94
processSlot - 32 slots 2.3849 ms/op 2.9298 ms/op 0.81
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 44.295 ms/op 41.564 ms/op 1.07
getCommitteeAssignments - req 1 vs - 250000 vc 1.8384 ms/op 2.2368 ms/op 0.82
getCommitteeAssignments - req 100 vs - 250000 vc 3.5928 ms/op 4.2354 ms/op 0.85
getCommitteeAssignments - req 1000 vs - 250000 vc 3.9247 ms/op 4.5718 ms/op 0.86
findModifiedValidators - 10000 modified validators 381.52 ms/op 473.60 ms/op 0.81
findModifiedValidators - 1000 modified validators 219.98 ms/op 691.20 ms/op 0.32
findModifiedValidators - 100 modified validators 158.77 ms/op 338.96 ms/op 0.47
findModifiedValidators - 10 modified validators 194.87 ms/op 393.82 ms/op 0.49
findModifiedValidators - 1 modified validators 151.98 ms/op 361.15 ms/op 0.42
findModifiedValidators - no difference 165.30 ms/op 406.66 ms/op 0.41
compare ViewDUs 3.4210 s/op 3.9958 s/op 0.86
compare each validator Uint8Array 1.6930 s/op 1.6145 s/op 1.05
compare ViewDU to Uint8Array 948.63 ms/op 1.0611 s/op 0.89
migrate state 1000000 validators, 24 modified, 0 new 758.51 ms/op 683.46 ms/op 1.11
migrate state 1000000 validators, 1700 modified, 1000 new 959.82 ms/op 923.81 ms/op 1.04
migrate state 1000000 validators, 3400 modified, 2000 new 1.2310 s/op 1.1779 s/op 1.05
migrate state 1500000 validators, 24 modified, 0 new 664.20 ms/op 739.88 ms/op 0.90
migrate state 1500000 validators, 1700 modified, 1000 new 942.20 ms/op 959.73 ms/op 0.98
migrate state 1500000 validators, 3400 modified, 2000 new 1.0748 s/op 1.1594 s/op 0.93
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.9800 ns/op 4.4800 ns/op 1.33
state getBlockRootAtSlot - 250000 vs - 7PWei 402.03 ns/op 455.20 ns/op 0.88
computeProposers - vc 250000 6.1738 ms/op 7.1019 ms/op 0.87
computeEpochShuffling - vc 250000 34.907 ms/op 42.348 ms/op 0.82
getNextSyncCommittee - vc 250000 102.67 ms/op 119.76 ms/op 0.86
computeSigningRoot for AttestationData 25.433 us/op 16.881 us/op 1.51
hash AttestationData serialized data then Buffer.toString(base64) 1.2127 us/op 1.5465 us/op 0.78
toHexString serialized data 787.35 ns/op 882.46 ns/op 0.89
Buffer.toString(base64) 147.17 ns/op 171.36 ns/op 0.86
nodejs block root to RootHex using toHex 124.74 ns/op 146.59 ns/op 0.85
nodejs block root to RootHex using toRootHex 78.138 ns/op 91.147 ns/op 0.86
browser block root to RootHex using the deprecated toHexString 207.48 ns/op 231.66 ns/op 0.90
browser block root to RootHex using toHex 192.78 ns/op 181.13 ns/op 1.06
browser block root to RootHex using toRootHex 160.47 ns/op 160.34 ns/op 1.00

by benchmarkbot/action

@matthewkeil
Copy link
Member Author

@wemeetagain this branch was deployed last night to feat3 and the metrics look commensurate with unstable. Going to let them soak for another 24hours to verify though. @twoeths let me know if you see anything that jumps out at you. We changed the way the blst rust code gets compiled in ChainSafe/blst-ts#154

@wemeetagain
Copy link
Member

So far metrics look good. Equivalent and better metrics in bls job time, peering, etc.

@matthewkeil matthewkeil marked this pull request as ready for review October 22, 2024 14:29
@matthewkeil matthewkeil requested a review from a team as a code owner October 22, 2024 14:29
package.json Outdated Show resolved Hide resolved
@matthewkeil matthewkeil requested review from nflaig, a team and wemeetagain October 22, 2024 14:38
@matthewkeil matthewkeil removed the status-do-not-merge Merging this issue will break the build. Do not merge! label Oct 22, 2024
@matthewkeil matthewkeil merged commit 717abf3 into unstable Oct 22, 2024
22 checks passed
@matthewkeil matthewkeil deleted the mkeil/portable-blst branch October 22, 2024 16:06
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.23.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.

./lodestar: line 7: 2710 Illegal instruction (core dumped)
3 participants