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

Move map utils to utils package #4622

Merged
merged 1 commit into from Oct 2, 2022
Merged

Move map utils to utils package #4622

merged 1 commit into from Oct 2, 2022

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Oct 2, 2022

Motivation

Map utils are useful for multiple packages, at least validator, beacon, cli

Description

Move map utils to utils package

@dapplion dapplion requested a review from a team as a code owner October 2, 2022 10:36
Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

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

looks good!

@dapplion dapplion enabled auto-merge (squash) October 2, 2022 10:45
@github-actions
Copy link
Contributor

github-actions bot commented Oct 2, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 3d93ccc Previous: 82ea295 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.8655 ms/op 1.6371 ms/op 1.14
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 62.834 us/op 70.147 us/op 0.90
BLS verify - blst-native 2.1634 ms/op 1.8572 ms/op 1.16
BLS verifyMultipleSignatures 3 - blst-native 4.4698 ms/op 3.7981 ms/op 1.18
BLS verifyMultipleSignatures 8 - blst-native 9.6631 ms/op 8.1832 ms/op 1.18
BLS verifyMultipleSignatures 32 - blst-native 35.126 ms/op 29.640 ms/op 1.19
BLS aggregatePubkeys 32 - blst-native 46.777 us/op 39.209 us/op 1.19
BLS aggregatePubkeys 128 - blst-native 182.22 us/op 153.30 us/op 1.19
getAttestationsForBlock 75.297 ms/op 77.806 ms/op 0.97
isKnown best case - 1 super set check 467.00 ns/op 417.00 ns/op 1.12
isKnown normal case - 2 super set checks 455.00 ns/op 405.00 ns/op 1.12
isKnown worse case - 16 super set checks 467.00 ns/op 402.00 ns/op 1.16
CheckpointStateCache - add get delete 8.5890 us/op 8.2370 us/op 1.04
validate gossip signedAggregateAndProof - struct 5.0259 ms/op 4.2611 ms/op 1.18
validate gossip attestation - struct 2.3655 ms/op 2.0284 ms/op 1.17
pickEth1Vote - no votes 2.1262 ms/op 2.0738 ms/op 1.03
pickEth1Vote - max votes 17.979 ms/op 17.492 ms/op 1.03
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.236 ms/op 10.500 ms/op 1.17
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.630 ms/op 18.663 ms/op 1.05
pickEth1Vote - Eth1Data fastSerialize value x2048 1.4118 ms/op 1.4569 ms/op 0.97
pickEth1Vote - Eth1Data fastSerialize tree x2048 12.255 ms/op 11.361 ms/op 1.08
bytes32 toHexString 937.00 ns/op 1.0180 us/op 0.92
bytes32 Buffer.toString(hex) 776.00 ns/op 672.00 ns/op 1.15
bytes32 Buffer.toString(hex) from Uint8Array 995.00 ns/op 917.00 ns/op 1.09
bytes32 Buffer.toString(hex) + 0x 785.00 ns/op 678.00 ns/op 1.16
Object access 1 prop 0.33700 ns/op 0.34000 ns/op 0.99
Map access 1 prop 0.30000 ns/op 0.28800 ns/op 1.04
Object get x1000 10.921 ns/op 18.924 ns/op 0.58
Map get x1000 0.93400 ns/op 1.0660 ns/op 0.88
Object set x1000 70.858 ns/op 107.12 ns/op 0.66
Map set x1000 46.524 ns/op 63.978 ns/op 0.73
Return object 10000 times 0.44170 ns/op 0.37430 ns/op 1.18
Throw Error 10000 times 5.8658 us/op 6.0303 us/op 0.97
enrSubnets - fastDeserialize 64 bits 2.4290 us/op 2.5240 us/op 0.96
enrSubnets - ssz BitVector 64 bits 808.00 ns/op 709.00 ns/op 1.14
enrSubnets - fastDeserialize 4 bits 366.00 ns/op 342.00 ns/op 1.07
enrSubnets - ssz BitVector 4 bits 741.00 ns/op 701.00 ns/op 1.06
prioritizePeers score -10:0 att 32-0.1 sync 2-0 81.451 us/op 90.101 us/op 0.90
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 122.66 us/op 123.36 us/op 0.99
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 198.14 us/op 204.38 us/op 0.97
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 336.51 us/op 430.75 us/op 0.78
prioritizePeers score 0:0 att 64-1 sync 4-1 407.77 us/op 461.78 us/op 0.88
RateTracker 1000000 limit, 1 obj count per request 176.11 ns/op 205.38 ns/op 0.86
RateTracker 1000000 limit, 2 obj count per request 129.85 ns/op 153.88 ns/op 0.84
RateTracker 1000000 limit, 4 obj count per request 105.25 ns/op 128.53 ns/op 0.82
RateTracker 1000000 limit, 8 obj count per request 93.512 ns/op 115.43 ns/op 0.81
RateTracker with prune 3.7960 us/op 4.1380 us/op 0.92
array of 16000 items push then shift 51.572 us/op 3.1868 us/op 16.18
LinkedList of 16000 items push then shift 12.022 ns/op 17.834 ns/op 0.67
array of 16000 items push then pop 196.81 ns/op 210.65 ns/op 0.93
LinkedList of 16000 items push then pop 12.124 ns/op 17.084 ns/op 0.71
array of 24000 items push then shift 77.333 us/op 4.5426 us/op 17.02
LinkedList of 24000 items push then shift 12.314 ns/op 20.635 ns/op 0.60
array of 24000 items push then pop 191.81 ns/op 184.59 ns/op 1.04
LinkedList of 24000 items push then pop 12.061 ns/op 18.321 ns/op 0.66
intersect bitArray bitLen 8 10.751 ns/op 11.757 ns/op 0.91
intersect array and set length 8 137.81 ns/op 159.19 ns/op 0.87
intersect bitArray bitLen 128 56.838 ns/op 62.138 ns/op 0.91
intersect array and set length 128 1.7257 us/op 2.1483 us/op 0.80
Buffer.concat 32 items 2.1200 ns/op 1.8240 ns/op 1.16
pass gossip attestations to forkchoice per slot 3.5907 ms/op 5.9263 ms/op 0.61
computeDeltas 4.3302 ms/op 6.4557 ms/op 0.67
computeProposerBoostScoreFromBalances 805.16 us/op 921.08 us/op 0.87
altair processAttestation - 250000 vs - 7PWei normalcase 3.2803 ms/op 3.4790 ms/op 0.94
altair processAttestation - 250000 vs - 7PWei worstcase 5.0450 ms/op 5.4342 ms/op 0.93
altair processAttestation - setStatus - 1/6 committees join 185.28 us/op 218.00 us/op 0.85
altair processAttestation - setStatus - 1/3 committees join 361.63 us/op 410.32 us/op 0.88
altair processAttestation - setStatus - 1/2 committees join 518.00 us/op 578.92 us/op 0.89
altair processAttestation - setStatus - 2/3 committees join 672.59 us/op 750.37 us/op 0.90
altair processAttestation - setStatus - 4/5 committees join 946.93 us/op 1.0283 ms/op 0.92
altair processAttestation - setStatus - 100% committees join 1.1441 ms/op 1.2305 ms/op 0.93
altair processBlock - 250000 vs - 7PWei normalcase 27.117 ms/op 27.430 ms/op 0.99
altair processBlock - 250000 vs - 7PWei normalcase hashState 35.219 ms/op 43.354 ms/op 0.81
altair processBlock - 250000 vs - 7PWei worstcase 81.643 ms/op 73.967 ms/op 1.10
altair processBlock - 250000 vs - 7PWei worstcase hashState 113.76 ms/op 96.306 ms/op 1.18
phase0 processBlock - 250000 vs - 7PWei normalcase 3.1149 ms/op 3.0905 ms/op 1.01
phase0 processBlock - 250000 vs - 7PWei worstcase 50.516 ms/op 43.325 ms/op 1.17
altair processEth1Data - 250000 vs - 7PWei normalcase 695.35 us/op 718.15 us/op 0.97
Tree 40 250000 create 708.70 ms/op 770.60 ms/op 0.92
Tree 40 250000 get(125000) 247.13 ns/op 283.59 ns/op 0.87
Tree 40 250000 set(125000) 1.8752 us/op 2.2903 us/op 0.82
Tree 40 250000 toArray() 26.122 ms/op 31.232 ms/op 0.84
Tree 40 250000 iterate all - toArray() + loop 26.398 ms/op 31.192 ms/op 0.85
Tree 40 250000 iterate all - get(i) 109.38 ms/op 105.44 ms/op 1.04
MutableVector 250000 create 19.914 ms/op 13.723 ms/op 1.45
MutableVector 250000 get(125000) 10.650 ns/op 13.313 ns/op 0.80
MutableVector 250000 set(125000) 440.50 ns/op 561.45 ns/op 0.78
MutableVector 250000 toArray() 5.3530 ms/op 6.7235 ms/op 0.80
MutableVector 250000 iterate all - toArray() + loop 5.5961 ms/op 7.0394 ms/op 0.79
MutableVector 250000 iterate all - get(i) 2.6093 ms/op 3.3330 ms/op 0.78
Array 250000 create 5.3328 ms/op 6.0309 ms/op 0.88
Array 250000 clone - spread 2.3750 ms/op 3.2064 ms/op 0.74
Array 250000 get(125000) 1.1510 ns/op 1.3570 ns/op 0.85
Array 250000 set(125000) 1.1540 ns/op 1.3420 ns/op 0.86
Array 250000 iterate all - loop 152.68 us/op 167.83 us/op 0.91
effectiveBalanceIncrements clone Uint8Array 300000 89.633 us/op 67.227 us/op 1.33
effectiveBalanceIncrements clone MutableVector 300000 650.00 ns/op 972.00 ns/op 0.67
effectiveBalanceIncrements rw all Uint8Array 300000 247.13 us/op 254.10 us/op 0.97
effectiveBalanceIncrements rw all MutableVector 300000 125.59 ms/op 176.54 ms/op 0.71
phase0 afterProcessEpoch - 250000 vs - 7PWei 197.08 ms/op 181.92 ms/op 1.08
phase0 beforeProcessEpoch - 250000 vs - 7PWei 56.586 ms/op 114.78 ms/op 0.49
altair processEpoch - mainnet_e81889 559.74 ms/op 586.27 ms/op 0.95
mainnet_e81889 - altair beforeProcessEpoch 119.57 ms/op 139.53 ms/op 0.86
mainnet_e81889 - altair processJustificationAndFinalization 35.274 us/op 41.206 us/op 0.86
mainnet_e81889 - altair processInactivityUpdates 8.9201 ms/op 11.415 ms/op 0.78
mainnet_e81889 - altair processRewardsAndPenalties 77.053 ms/op 90.566 ms/op 0.85
mainnet_e81889 - altair processRegistryUpdates 5.0690 us/op 6.7800 us/op 0.75
mainnet_e81889 - altair processSlashings 1.1380 us/op 1.4810 us/op 0.77
mainnet_e81889 - altair processEth1DataReset 1.2300 us/op 1.5600 us/op 0.79
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.1290 ms/op 2.7376 ms/op 0.78
mainnet_e81889 - altair processSlashingsReset 6.8450 us/op 10.704 us/op 0.64
mainnet_e81889 - altair processRandaoMixesReset 14.502 us/op 12.481 us/op 1.16
mainnet_e81889 - altair processHistoricalRootsUpdate 1.4140 us/op 1.8740 us/op 0.75
mainnet_e81889 - altair processParticipationFlagUpdates 4.6560 us/op 6.0760 us/op 0.77
mainnet_e81889 - altair processSyncCommitteeUpdates 1.1060 us/op 1.5880 us/op 0.70
mainnet_e81889 - altair afterProcessEpoch 217.31 ms/op 192.16 ms/op 1.13
phase0 processEpoch - mainnet_e58758 623.52 ms/op 525.03 ms/op 1.19
mainnet_e58758 - phase0 beforeProcessEpoch 220.47 ms/op 255.27 ms/op 0.86
mainnet_e58758 - phase0 processJustificationAndFinalization 30.114 us/op 38.369 us/op 0.78
mainnet_e58758 - phase0 processRewardsAndPenalties 121.94 ms/op 76.617 ms/op 1.59
mainnet_e58758 - phase0 processRegistryUpdates 13.435 us/op 21.175 us/op 0.63
mainnet_e58758 - phase0 processSlashings 1.0210 us/op 1.6150 us/op 0.63
mainnet_e58758 - phase0 processEth1DataReset 1.1860 us/op 1.6190 us/op 0.73
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.9437 ms/op 2.2425 ms/op 0.87
mainnet_e58758 - phase0 processSlashingsReset 7.2200 us/op 9.0450 us/op 0.80
mainnet_e58758 - phase0 processRandaoMixesReset 7.5980 us/op 12.369 us/op 0.61
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1480 us/op 1.9610 us/op 0.59
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.0490 us/op 9.8020 us/op 0.72
mainnet_e58758 - phase0 afterProcessEpoch 161.80 ms/op 176.73 ms/op 0.92
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.1475 ms/op 2.8259 ms/op 0.76
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.3269 ms/op 3.3373 ms/op 0.70
altair processInactivityUpdates - 250000 normalcase 51.067 ms/op 39.088 ms/op 1.31
altair processInactivityUpdates - 250000 worstcase 53.480 ms/op 39.279 ms/op 1.36
phase0 processRegistryUpdates - 250000 normalcase 13.306 us/op 17.489 us/op 0.76
phase0 processRegistryUpdates - 250000 badcase_full_deposits 515.50 us/op 746.04 us/op 0.69
phase0 processRegistryUpdates - 250000 worstcase 0.5 218.56 ms/op 194.60 ms/op 1.12
altair processRewardsAndPenalties - 250000 normalcase 128.92 ms/op 89.266 ms/op 1.44
altair processRewardsAndPenalties - 250000 worstcase 137.33 ms/op 129.84 ms/op 1.06
phase0 getAttestationDeltas - 250000 normalcase 11.468 ms/op 12.529 ms/op 0.92
phase0 getAttestationDeltas - 250000 worstcase 11.661 ms/op 12.589 ms/op 0.93
phase0 processSlashings - 250000 worstcase 5.0245 ms/op 5.7177 ms/op 0.88
altair processSyncCommitteeUpdates - 250000 290.96 ms/op 263.62 ms/op 1.10
BeaconState.hashTreeRoot - No change 531.00 ns/op 507.00 ns/op 1.05
BeaconState.hashTreeRoot - 1 full validator 70.217 us/op 62.723 us/op 1.12
BeaconState.hashTreeRoot - 32 full validator 822.75 us/op 595.44 us/op 1.38
BeaconState.hashTreeRoot - 512 full validator 6.8277 ms/op 5.8276 ms/op 1.17
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 88.636 us/op 77.350 us/op 1.15
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4372 ms/op 1.1293 ms/op 1.27
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 16.293 ms/op 14.764 ms/op 1.10
BeaconState.hashTreeRoot - 1 balances 69.029 us/op 52.576 us/op 1.31
BeaconState.hashTreeRoot - 32 balances 723.78 us/op 605.38 us/op 1.20
BeaconState.hashTreeRoot - 512 balances 6.2066 ms/op 5.4088 ms/op 1.15
BeaconState.hashTreeRoot - 250000 balances 100.41 ms/op 85.609 ms/op 1.17
aggregationBits - 2048 els - zipIndexesInBitList 24.778 us/op 33.571 us/op 0.74
regular array get 100000 times 62.202 us/op 67.324 us/op 0.92
wrappedArray get 100000 times 61.277 us/op 67.349 us/op 0.91
arrayWithProxy get 100000 times 31.028 ms/op 29.205 ms/op 1.06
ssz.Root.equals 520.00 ns/op 450.00 ns/op 1.16
byteArrayEquals 442.00 ns/op 451.00 ns/op 0.98
shuffle list - 16384 els 11.298 ms/op 11.025 ms/op 1.02
shuffle list - 250000 els 166.29 ms/op 163.21 ms/op 1.02
processSlot - 1 slots 12.821 us/op 11.970 us/op 1.07
processSlot - 32 slots 2.1184 ms/op 1.6271 ms/op 1.30
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 339.97 us/op 375.52 us/op 0.91
getCommitteeAssignments - req 1 vs - 250000 vc 5.4693 ms/op 5.2686 ms/op 1.04
getCommitteeAssignments - req 100 vs - 250000 vc 7.9820 ms/op 7.3249 ms/op 1.09
getCommitteeAssignments - req 1000 vs - 250000 vc 8.5527 ms/op 7.7723 ms/op 1.10
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 8.0700 ns/op 9.3100 ns/op 0.87
state getBlockRootAtSlot - 250000 vs - 7PWei 955.81 ns/op 1.0451 us/op 0.91
computeProposers - vc 250000 17.141 ms/op 15.588 ms/op 1.10
computeEpochShuffling - vc 250000 171.58 ms/op 165.58 ms/op 1.04
getNextSyncCommittee - vc 250000 284.18 ms/op 259.90 ms/op 1.09

by benchmarkbot/action

@dapplion dapplion merged commit 9636a74 into unstable Oct 2, 2022
@dapplion dapplion deleted the dapplion/mapdef branch October 2, 2022 10:51
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.

None yet

2 participants