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

feat: only subscribe to short lived subnets 2 slots in advanced #5810

Merged

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Jul 27, 2023

Motivation

  • Right now if we have aggregator duty at epoch n we'll subscribe at the start of epoch n-1 which is a waste of cpu and bandwidth

Description

  • We still search for subnet peers at the start of epoch n - 1, that makes topic peers available, so it does not take time to get stable mesh peers
  • Subscribe to dutied subnet 2 slots before dutied slot
  • Use the current aggregatorSlotSubnet map, check it per clock slot to subscribe

Closes #5757

Test

  • The produced aggregate has same number of participants on all nodes, for example 1v
Screenshot 2023-07-27 at 14 48 39
  • vs unstable
Screenshot 2023-07-27 at 14 49 13
  • For short lived subnets, we subscribed in very short period
Screenshot 2023-07-27 at 14 50 55
  • vs unstable
Screenshot 2023-07-27 at 14 51 20
  • average number of mesh peers are good, this is on 1v node
Screenshot 2023-07-27 at 14 57 54

@github-actions
Copy link
Contributor

github-actions bot commented Jul 27, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: b0a08aa Previous: 201dfc8 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 441.17 us/op 736.46 us/op 0.60
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 75.200 us/op 76.952 us/op 0.98
BLS verify - blst-native 1.2197 ms/op 1.2060 ms/op 1.01
BLS verifyMultipleSignatures 3 - blst-native 2.4831 ms/op 2.4125 ms/op 1.03
BLS verifyMultipleSignatures 8 - blst-native 5.3440 ms/op 5.2197 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst-native 19.244 ms/op 18.944 ms/op 1.02
BLS aggregatePubkeys 32 - blst-native 25.571 us/op 24.972 us/op 1.02
BLS aggregatePubkeys 128 - blst-native 99.973 us/op 97.634 us/op 1.02
getAttestationsForBlock 57.511 ms/op 50.705 ms/op 1.13
isKnown best case - 1 super set check 291.00 ns/op 281.00 ns/op 1.04
isKnown normal case - 2 super set checks 268.00 ns/op 279.00 ns/op 0.96
isKnown worse case - 16 super set checks 277.00 ns/op 273.00 ns/op 1.01
CheckpointStateCache - add get delete 4.9660 us/op 4.8780 us/op 1.02
validate api signedAggregateAndProof - struct 2.7719 ms/op 2.7777 ms/op 1.00
validate gossip signedAggregateAndProof - struct 2.8094 ms/op 2.7793 ms/op 1.01
validate api attestation - struct 1.3299 ms/op 1.2721 ms/op 1.05
validate gossip attestation - struct 1.3619 ms/op 1.3023 ms/op 1.05
pickEth1Vote - no votes 1.2357 ms/op 1.1581 ms/op 1.07
pickEth1Vote - max votes 8.4939 ms/op 9.2487 ms/op 0.92
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.2721 ms/op 8.4711 ms/op 0.98
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 17.604 ms/op 13.962 ms/op 1.26
pickEth1Vote - Eth1Data fastSerialize value x2048 581.89 us/op 681.61 us/op 0.85
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.2655 ms/op 6.8071 ms/op 0.63
bytes32 toHexString 490.00 ns/op 474.00 ns/op 1.03
bytes32 Buffer.toString(hex) 294.00 ns/op 296.00 ns/op 0.99
bytes32 Buffer.toString(hex) from Uint8Array 443.00 ns/op 420.00 ns/op 1.05
bytes32 Buffer.toString(hex) + 0x 287.00 ns/op 304.00 ns/op 0.94
Object access 1 prop 0.16100 ns/op 0.15700 ns/op 1.03
Map access 1 prop 0.14500 ns/op 0.15600 ns/op 0.93
Object get x1000 7.3240 ns/op 7.3120 ns/op 1.00
Map get x1000 0.64000 ns/op 0.59200 ns/op 1.08
Object set x1000 53.271 ns/op 46.762 ns/op 1.14
Map set x1000 39.945 ns/op 36.795 ns/op 1.09
Return object 10000 times 0.24380 ns/op 0.22370 ns/op 1.09
Throw Error 10000 times 3.9166 us/op 3.6596 us/op 1.07
fastMsgIdFn sha256 / 200 bytes 3.3690 us/op 3.1150 us/op 1.08
fastMsgIdFn h32 xxhash / 200 bytes 298.00 ns/op 267.00 ns/op 1.12
fastMsgIdFn h64 xxhash / 200 bytes 361.00 ns/op 334.00 ns/op 1.08
fastMsgIdFn sha256 / 1000 bytes 11.405 us/op 10.813 us/op 1.05
fastMsgIdFn h32 xxhash / 1000 bytes 452.00 ns/op 393.00 ns/op 1.15
fastMsgIdFn h64 xxhash / 1000 bytes 447.00 ns/op 408.00 ns/op 1.10
fastMsgIdFn sha256 / 10000 bytes 104.86 us/op 99.007 us/op 1.06
fastMsgIdFn h32 xxhash / 10000 bytes 2.0190 us/op 1.7950 us/op 1.12
fastMsgIdFn h64 xxhash / 10000 bytes 1.4270 us/op 1.2430 us/op 1.15
enrSubnets - fastDeserialize 64 bits 1.2890 us/op 1.1700 us/op 1.10
enrSubnets - ssz BitVector 64 bits 520.00 ns/op 407.00 ns/op 1.28
enrSubnets - fastDeserialize 4 bits 218.00 ns/op 166.00 ns/op 1.31
enrSubnets - ssz BitVector 4 bits 507.00 ns/op 407.00 ns/op 1.25
prioritizePeers score -10:0 att 32-0.1 sync 2-0 107.56 us/op 98.573 us/op 1.09
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 145.54 us/op 124.61 us/op 1.17
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 198.31 us/op 154.11 us/op 1.29
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 303.20 us/op 274.80 us/op 1.10
prioritizePeers score 0:0 att 64-1 sync 4-1 348.38 us/op 328.72 us/op 1.06
array of 16000 items push then shift 1.6417 us/op 1.5440 us/op 1.06
LinkedList of 16000 items push then shift 9.2220 ns/op 8.7310 ns/op 1.06
array of 16000 items push then pop 72.508 ns/op 57.392 ns/op 1.26
LinkedList of 16000 items push then pop 8.8250 ns/op 8.5090 ns/op 1.04
array of 24000 items push then shift 2.5713 us/op 2.3634 us/op 1.09
LinkedList of 24000 items push then shift 9.0280 ns/op 8.8740 ns/op 1.02
array of 24000 items push then pop 120.61 ns/op 106.45 ns/op 1.13
LinkedList of 24000 items push then pop 9.5130 ns/op 8.6820 ns/op 1.10
intersect bitArray bitLen 8 6.8230 ns/op 6.8440 ns/op 1.00
intersect array and set length 8 57.457 ns/op 61.103 ns/op 0.94
intersect bitArray bitLen 128 32.367 ns/op 32.333 ns/op 1.00
intersect array and set length 128 763.49 ns/op 804.44 ns/op 0.95
bitArray.getTrueBitIndexes() bitLen 128 1.4390 us/op 1.6500 us/op 0.87
bitArray.getTrueBitIndexes() bitLen 248 2.4060 us/op 2.6290 us/op 0.92
bitArray.getTrueBitIndexes() bitLen 512 4.5150 us/op 5.0300 us/op 0.90
Buffer.concat 32 items 906.00 ns/op 977.00 ns/op 0.93
Uint8Array.set 32 items 1.6620 us/op 1.7740 us/op 0.94
transfer serialized Status (84 B) 1.7250 us/op 1.8300 us/op 0.94
copy serialized Status (84 B) 1.4370 us/op 1.5190 us/op 0.95
transfer serialized SignedVoluntaryExit (112 B) 1.8060 us/op 1.9490 us/op 0.93
copy serialized SignedVoluntaryExit (112 B) 1.4440 us/op 1.5780 us/op 0.92
transfer serialized ProposerSlashing (416 B) 1.9410 us/op 2.2210 us/op 0.87
copy serialized ProposerSlashing (416 B) 1.7530 us/op 1.7850 us/op 0.98
transfer serialized Attestation (485 B) 2.0390 us/op 1.9960 us/op 1.02
copy serialized Attestation (485 B) 1.8510 us/op 1.7470 us/op 1.06
transfer serialized AttesterSlashing (33232 B) 2.2700 us/op 2.0960 us/op 1.08
copy serialized AttesterSlashing (33232 B) 4.7000 us/op 4.8500 us/op 0.97
transfer serialized Small SignedBeaconBlock (128000 B) 2.4600 us/op 2.3500 us/op 1.05
copy serialized Small SignedBeaconBlock (128000 B) 11.669 us/op 13.614 us/op 0.86
transfer serialized Avg SignedBeaconBlock (200000 B) 2.7540 us/op 2.7240 us/op 1.01
copy serialized Avg SignedBeaconBlock (200000 B) 16.875 us/op 22.651 us/op 0.75
transfer serialized BlobsSidecar (524380 B) 3.0540 us/op 2.7100 us/op 1.13
copy serialized BlobsSidecar (524380 B) 89.966 us/op 123.40 us/op 0.73
transfer serialized Big SignedBeaconBlock (1000000 B) 3.0940 us/op 3.4040 us/op 0.91
copy serialized Big SignedBeaconBlock (1000000 B) 230.46 us/op 163.88 us/op 1.41
pass gossip attestations to forkchoice per slot 2.1544 ms/op 2.1666 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 2.2623 ms/op 2.1244 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 0 14.523 ms/op 14.343 ms/op 1.01
forkChoice updateHead vc 1000000 bc 64 eq 0 19.955 ms/op 23.352 ms/op 0.85
forkChoice updateHead vc 600000 bc 320 eq 0 16.960 ms/op 17.349 ms/op 0.98
forkChoice updateHead vc 600000 bc 1200 eq 0 89.544 ms/op 88.877 ms/op 1.01
forkChoice updateHead vc 600000 bc 64 eq 1000 25.442 ms/op 22.864 ms/op 1.11
forkChoice updateHead vc 600000 bc 64 eq 10000 25.521 ms/op 24.458 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 300000 32.608 ms/op 30.592 ms/op 1.07
computeDeltas 3.7935 ms/op 3.2318 ms/op 1.17
computeProposerBoostScoreFromBalances 397.19 us/op 392.91 us/op 1.01
altair processAttestation - 250000 vs - 7PWei normalcase 3.0730 ms/op 2.6320 ms/op 1.17
altair processAttestation - 250000 vs - 7PWei worstcase 4.6622 ms/op 4.2532 ms/op 1.10
altair processAttestation - setStatus - 1/6 committees join 243.87 us/op 196.44 us/op 1.24
altair processAttestation - setStatus - 1/3 committees join 427.84 us/op 355.23 us/op 1.20
altair processAttestation - setStatus - 1/2 committees join 616.62 us/op 475.73 us/op 1.30
altair processAttestation - setStatus - 2/3 committees join 732.64 us/op 605.79 us/op 1.21
altair processAttestation - setStatus - 4/5 committees join 1.0638 ms/op 853.38 us/op 1.25
altair processAttestation - setStatus - 100% committees join 1.1929 ms/op 997.52 us/op 1.20
altair processBlock - 250000 vs - 7PWei normalcase 10.119 ms/op 11.037 ms/op 0.92
altair processBlock - 250000 vs - 7PWei normalcase hashState 17.609 ms/op 18.173 ms/op 0.97
altair processBlock - 250000 vs - 7PWei worstcase 40.605 ms/op 39.992 ms/op 1.02
altair processBlock - 250000 vs - 7PWei worstcase hashState 64.683 ms/op 63.599 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3029 ms/op 2.6827 ms/op 0.86
phase0 processBlock - 250000 vs - 7PWei worstcase 31.351 ms/op 31.686 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 585.79 us/op 536.23 us/op 1.09
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 13.775 us/op 10.017 us/op 1.38
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 58.899 us/op 84.141 us/op 0.70
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 15.730 us/op 26.863 us/op 0.59
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 14.857 us/op 15.207 us/op 0.98
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 183.19 us/op 166.59 us/op 1.10
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.4894 ms/op 1.5911 ms/op 0.94
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.1815 ms/op 1.8075 ms/op 1.21
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.4978 ms/op 2.1619 ms/op 0.69
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.8833 ms/op 4.5320 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.9276 ms/op 2.7610 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.7367 ms/op 6.7336 ms/op 0.85
Tree 40 250000 create 353.65 ms/op 412.15 ms/op 0.86
Tree 40 250000 get(125000) 214.33 ns/op 214.60 ns/op 1.00
Tree 40 250000 set(125000) 1.0706 us/op 1.0545 us/op 1.02
Tree 40 250000 toArray() 21.893 ms/op 21.457 ms/op 1.02
Tree 40 250000 iterate all - toArray() + loop 23.045 ms/op 23.558 ms/op 0.98
Tree 40 250000 iterate all - get(i) 76.019 ms/op 74.195 ms/op 1.02
MutableVector 250000 create 15.404 ms/op 10.088 ms/op 1.53
MutableVector 250000 get(125000) 6.8640 ns/op 6.5350 ns/op 1.05
MutableVector 250000 set(125000) 285.22 ns/op 288.00 ns/op 0.99
MutableVector 250000 toArray() 3.0284 ms/op 3.9755 ms/op 0.76
MutableVector 250000 iterate all - toArray() + loop 3.2511 ms/op 4.1078 ms/op 0.79
MutableVector 250000 iterate all - get(i) 1.5728 ms/op 1.6852 ms/op 0.93
Array 250000 create 3.0004 ms/op 3.2554 ms/op 0.92
Array 250000 clone - spread 1.1771 ms/op 1.0297 ms/op 1.14
Array 250000 get(125000) 0.59000 ns/op 0.50300 ns/op 1.17
Array 250000 set(125000) 0.65300 ns/op 0.58500 ns/op 1.12
Array 250000 iterate all - loop 85.739 us/op 113.17 us/op 0.76
effectiveBalanceIncrements clone Uint8Array 300000 35.463 us/op 23.943 us/op 1.48
effectiveBalanceIncrements clone MutableVector 300000 322.00 ns/op 268.00 ns/op 1.20
effectiveBalanceIncrements rw all Uint8Array 300000 177.33 us/op 182.05 us/op 0.97
effectiveBalanceIncrements rw all MutableVector 300000 87.199 ms/op 76.216 ms/op 1.14
phase0 afterProcessEpoch - 250000 vs - 7PWei 117.06 ms/op 116.38 ms/op 1.01
phase0 beforeProcessEpoch - 250000 vs - 7PWei 42.704 ms/op 30.847 ms/op 1.38
altair processEpoch - mainnet_e81889 335.40 ms/op 313.97 ms/op 1.07
mainnet_e81889 - altair beforeProcessEpoch 67.275 ms/op 58.640 ms/op 1.15
mainnet_e81889 - altair processJustificationAndFinalization 15.972 us/op 15.578 us/op 1.03
mainnet_e81889 - altair processInactivityUpdates 5.6794 ms/op 5.0689 ms/op 1.12
mainnet_e81889 - altair processRewardsAndPenalties 71.214 ms/op 66.662 ms/op 1.07
mainnet_e81889 - altair processRegistryUpdates 2.4310 us/op 2.5930 us/op 0.94
mainnet_e81889 - altair processSlashings 581.00 ns/op 443.00 ns/op 1.31
mainnet_e81889 - altair processEth1DataReset 452.00 ns/op 539.00 ns/op 0.84
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.5452 ms/op 1.2514 ms/op 1.23
mainnet_e81889 - altair processSlashingsReset 5.3830 us/op 2.6530 us/op 2.03
mainnet_e81889 - altair processRandaoMixesReset 7.1980 us/op 4.4260 us/op 1.63
mainnet_e81889 - altair processHistoricalRootsUpdate 669.00 ns/op 710.00 ns/op 0.94
mainnet_e81889 - altair processParticipationFlagUpdates 2.5100 us/op 2.9580 us/op 0.85
mainnet_e81889 - altair processSyncCommitteeUpdates 836.00 ns/op 569.00 ns/op 1.47
mainnet_e81889 - altair afterProcessEpoch 137.45 ms/op 127.27 ms/op 1.08
phase0 processEpoch - mainnet_e58758 394.26 ms/op 359.90 ms/op 1.10
mainnet_e58758 - phase0 beforeProcessEpoch 151.66 ms/op 129.91 ms/op 1.17
mainnet_e58758 - phase0 processJustificationAndFinalization 16.842 us/op 13.882 us/op 1.21
mainnet_e58758 - phase0 processRewardsAndPenalties 69.885 ms/op 66.066 ms/op 1.06
mainnet_e58758 - phase0 processRegistryUpdates 11.011 us/op 11.076 us/op 0.99
mainnet_e58758 - phase0 processSlashings 629.00 ns/op 466.00 ns/op 1.35
mainnet_e58758 - phase0 processEth1DataReset 422.00 ns/op 458.00 ns/op 0.92
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2710 ms/op 1.3583 ms/op 0.94
mainnet_e58758 - phase0 processSlashingsReset 2.1420 us/op 2.0530 us/op 1.04
mainnet_e58758 - phase0 processRandaoMixesReset 5.8020 us/op 4.6770 us/op 1.24
mainnet_e58758 - phase0 processHistoricalRootsUpdate 631.00 ns/op 539.00 ns/op 1.17
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.7680 us/op 2.9920 us/op 1.59
mainnet_e58758 - phase0 afterProcessEpoch 98.963 ms/op 97.915 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2667 ms/op 1.2475 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6574 ms/op 1.4011 ms/op 1.18
altair processInactivityUpdates - 250000 normalcase 25.285 ms/op 24.568 ms/op 1.03
altair processInactivityUpdates - 250000 worstcase 28.051 ms/op 23.642 ms/op 1.19
phase0 processRegistryUpdates - 250000 normalcase 7.5730 us/op 10.271 us/op 0.74
phase0 processRegistryUpdates - 250000 badcase_full_deposits 513.95 us/op 380.47 us/op 1.35
phase0 processRegistryUpdates - 250000 worstcase 0.5 138.02 ms/op 133.40 ms/op 1.03
altair processRewardsAndPenalties - 250000 normalcase 74.562 ms/op 69.278 ms/op 1.08
altair processRewardsAndPenalties - 250000 worstcase 76.909 ms/op 71.947 ms/op 1.07
phase0 getAttestationDeltas - 250000 normalcase 7.9039 ms/op 8.2133 ms/op 0.96
phase0 getAttestationDeltas - 250000 worstcase 7.6880 ms/op 8.9916 ms/op 0.86
phase0 processSlashings - 250000 worstcase 2.4859 ms/op 2.4953 ms/op 1.00
altair processSyncCommitteeUpdates - 250000 152.03 ms/op 173.22 ms/op 0.88
BeaconState.hashTreeRoot - No change 291.00 ns/op 327.00 ns/op 0.89
BeaconState.hashTreeRoot - 1 full validator 49.024 us/op 54.734 us/op 0.90
BeaconState.hashTreeRoot - 32 full validator 482.48 us/op 617.30 us/op 0.78
BeaconState.hashTreeRoot - 512 full validator 5.0033 ms/op 5.6991 ms/op 0.88
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 59.784 us/op 68.706 us/op 0.87
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 820.50 us/op 1.0228 ms/op 0.80
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 10.183 ms/op 13.660 ms/op 0.75
BeaconState.hashTreeRoot - 1 balances 46.790 us/op 56.762 us/op 0.82
BeaconState.hashTreeRoot - 32 balances 417.76 us/op 473.04 us/op 0.88
BeaconState.hashTreeRoot - 512 balances 3.8693 ms/op 5.1815 ms/op 0.75
BeaconState.hashTreeRoot - 250000 balances 82.463 ms/op 80.260 ms/op 1.03
aggregationBits - 2048 els - zipIndexesInBitList 14.816 us/op 20.062 us/op 0.74
regular array get 100000 times 43.645 us/op 45.652 us/op 0.96
wrappedArray get 100000 times 43.414 us/op 34.819 us/op 1.25
arrayWithProxy get 100000 times 15.458 ms/op 15.525 ms/op 1.00
ssz.Root.equals 216.00 ns/op 255.00 ns/op 0.85
byteArrayEquals 213.00 ns/op 262.00 ns/op 0.81
shuffle list - 16384 els 6.7716 ms/op 7.3421 ms/op 0.92
shuffle list - 250000 els 101.15 ms/op 107.97 ms/op 0.94
processSlot - 1 slots 7.8840 us/op 9.5040 us/op 0.83
processSlot - 32 slots 1.2858 ms/op 1.4373 ms/op 0.89
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 54.741 ms/op 59.367 ms/op 0.92
getCommitteeAssignments - req 1 vs - 250000 vc 2.5308 ms/op 2.5965 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 3.7877 ms/op 3.8568 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.1263 ms/op 4.2408 ms/op 0.97
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.8900 ns/op 5.2800 ns/op 0.93
state getBlockRootAtSlot - 250000 vs - 7PWei 619.61 ns/op 636.85 ns/op 0.97
computeProposers - vc 250000 9.4185 ms/op 9.3891 ms/op 1.00
computeEpochShuffling - vc 250000 106.55 ms/op 107.68 ms/op 0.99
getNextSyncCommittee - vc 250000 157.53 ms/op 156.90 ms/op 1.00
computeSigningRoot for AttestationData 12.728 us/op 13.680 us/op 0.93
hash AttestationData serialized data then Buffer.toString(base64) 2.1906 us/op 2.4098 us/op 0.91
toHexString serialized data 1.0241 us/op 1.0786 us/op 0.95
Buffer.toString(base64) 230.98 ns/op 215.32 ns/op 1.07

by benchmarkbot/action

@twoeths twoeths marked this pull request as ready for review July 27, 2023 08:42
@twoeths twoeths requested a review from a team as a code owner July 27, 2023 08:42
@wemeetagain wemeetagain merged commit 2d0557f into unstable Jul 27, 2023
11 checks passed
@wemeetagain wemeetagain deleted the tuyen/do_not_subscribe_short_lived_subnets_too_early branch July 27, 2023 18:29
@wemeetagain
Copy link
Member

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

Do not subscribe to short-lived subnets too early
3 participants