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

More readable dbFilterOptions logic #4516

Merged
merged 1 commit into from Sep 8, 2022
Merged

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Sep 7, 2022

Motivation

Mostly cosmetic change to improve readability in dbFilterOptions fn

Description

  • More readable dbFilterOptions logic

@dapplion dapplion requested a review from a team as a code owner September 7, 2022 10:43
@github-actions
Copy link
Contributor

github-actions bot commented Sep 7, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 6a84da4 Previous: 91a5a06 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.5491 ms/op 2.4283 ms/op 1.05
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 84.894 us/op 75.539 us/op 1.12
BLS verify - blst-native 2.2074 ms/op 1.8554 ms/op 1.19
BLS verifyMultipleSignatures 3 - blst-native 4.5132 ms/op 3.8102 ms/op 1.18
BLS verifyMultipleSignatures 8 - blst-native 10.025 ms/op 8.1969 ms/op 1.22
BLS verifyMultipleSignatures 32 - blst-native 35.868 ms/op 29.703 ms/op 1.21
BLS aggregatePubkeys 32 - blst-native 46.833 us/op 39.393 us/op 1.19
BLS aggregatePubkeys 128 - blst-native 179.98 us/op 152.86 us/op 1.18
getAttestationsForBlock 207.33 ms/op 151.09 ms/op 1.37
isKnown best case - 1 super set check 577.00 ns/op 379.00 ns/op 1.52
isKnown normal case - 2 super set checks 527.00 ns/op 372.00 ns/op 1.42
isKnown worse case - 16 super set checks 540.00 ns/op 368.00 ns/op 1.47
CheckpointStateCache - add get delete 10.727 us/op 8.0120 us/op 1.34
validate gossip signedAggregateAndProof - struct 5.2397 ms/op 3.7593 ms/op 1.39
validate gossip attestation - struct 2.4167 ms/op 1.7895 ms/op 1.35
pickEth1Vote - no votes 2.7025 ms/op 1.9817 ms/op 1.36
pickEth1Vote - max votes 23.133 ms/op 19.642 ms/op 1.18
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.131 ms/op 11.606 ms/op 1.22
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.299 ms/op 20.271 ms/op 1.15
pickEth1Vote - Eth1Data fastSerialize value x2048 1.8123 ms/op 1.3884 ms/op 1.31
pickEth1Vote - Eth1Data fastSerialize tree x2048 14.795 ms/op 11.845 ms/op 1.25
bytes32 toHexString 1.2150 us/op 937.00 ns/op 1.30
bytes32 Buffer.toString(hex) 846.00 ns/op 688.00 ns/op 1.23
bytes32 Buffer.toString(hex) from Uint8Array 1.1260 us/op 898.00 ns/op 1.25
bytes32 Buffer.toString(hex) + 0x 908.00 ns/op 691.00 ns/op 1.31
Object access 1 prop 0.43700 ns/op 0.34400 ns/op 1.27
Map access 1 prop 0.34900 ns/op 0.29900 ns/op 1.17
Object get x1000 16.524 ns/op 17.062 ns/op 0.97
Map get x1000 0.95300 ns/op 0.98800 ns/op 0.96
Object set x1000 122.18 ns/op 112.21 ns/op 1.09
Map set x1000 81.788 ns/op 69.292 ns/op 1.18
Return object 10000 times 0.41250 ns/op 0.36980 ns/op 1.12
Throw Error 10000 times 7.9648 us/op 5.8525 us/op 1.36
enrSubnets - fastDeserialize 64 bits 3.1070 us/op 2.5200 us/op 1.23
enrSubnets - ssz BitVector 64 bits 816.00 ns/op 698.00 ns/op 1.17
enrSubnets - fastDeserialize 4 bits 471.00 ns/op 365.00 ns/op 1.29
enrSubnets - ssz BitVector 4 bits 836.00 ns/op 710.00 ns/op 1.18
prioritizePeers score -10:0 att 32-0.1 sync 2-0 122.63 us/op 91.308 us/op 1.34
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 151.05 us/op 141.49 us/op 1.07
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 274.61 us/op 206.69 us/op 1.33
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 593.69 us/op 389.62 us/op 1.52
prioritizePeers score 0:0 att 64-1 sync 4-1 562.63 us/op 460.26 us/op 1.22
RateTracker 1000000 limit, 1 obj count per request 197.26 ns/op 190.79 ns/op 1.03
RateTracker 1000000 limit, 2 obj count per request 147.06 ns/op 147.01 ns/op 1.00
RateTracker 1000000 limit, 4 obj count per request 123.24 ns/op 120.18 ns/op 1.03
RateTracker 1000000 limit, 8 obj count per request 115.56 ns/op 109.98 ns/op 1.05
RateTracker with prune 5.3740 us/op 4.1180 us/op 1.31
array of 16000 items push then shift 5.3105 us/op 3.1847 us/op 1.67
LinkedList of 16000 items push then shift 21.081 ns/op 17.580 ns/op 1.20
array of 16000 items push then pop 265.19 ns/op 233.50 ns/op 1.14
LinkedList of 16000 items push then pop 19.857 ns/op 14.854 ns/op 1.34
array of 24000 items push then shift 7.8121 us/op 4.0148 us/op 1.95
LinkedList of 24000 items push then shift 21.363 ns/op 19.069 ns/op 1.12
array of 24000 items push then pop 258.84 ns/op 188.49 ns/op 1.37
LinkedList of 24000 items push then pop 18.670 ns/op 16.379 ns/op 1.14
intersect bitArray bitLen 8 12.830 ns/op 10.098 ns/op 1.27
intersect array and set length 8 214.60 ns/op 141.33 ns/op 1.52
intersect bitArray bitLen 128 74.848 ns/op 63.463 ns/op 1.18
intersect array and set length 128 2.3456 us/op 1.9281 us/op 1.22
Buffer.concat 32 items 2.4290 ns/op 1.6740 ns/op 1.45
pass gossip attestations to forkchoice per slot 4.1743 ms/op 2.8960 ms/op 1.44
computeDeltas 3.7149 ms/op 2.9197 ms/op 1.27
computeProposerBoostScoreFromBalances 857.71 us/op 804.77 us/op 1.07
altair processAttestation - 250000 vs - 7PWei normalcase 5.4191 ms/op 3.0915 ms/op 1.75
altair processAttestation - 250000 vs - 7PWei worstcase 7.8202 ms/op 4.8030 ms/op 1.63
altair processAttestation - setStatus - 1/6 committees join 256.68 us/op 191.90 us/op 1.34
altair processAttestation - setStatus - 1/3 committees join 461.07 us/op 409.01 us/op 1.13
altair processAttestation - setStatus - 1/2 committees join 685.68 us/op 513.26 us/op 1.34
altair processAttestation - setStatus - 2/3 committees join 907.31 us/op 660.84 us/op 1.37
altair processAttestation - setStatus - 4/5 committees join 1.3045 ms/op 928.33 us/op 1.41
altair processAttestation - setStatus - 100% committees join 1.5450 ms/op 1.2349 ms/op 1.25
altair processBlock - 250000 vs - 7PWei normalcase 34.310 ms/op 28.512 ms/op 1.20
altair processBlock - 250000 vs - 7PWei normalcase hashState 41.631 ms/op 43.749 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase 112.87 ms/op 68.806 ms/op 1.64
altair processBlock - 250000 vs - 7PWei worstcase hashState 120.95 ms/op 98.279 ms/op 1.23
phase0 processBlock - 250000 vs - 7PWei normalcase 4.5179 ms/op 3.2878 ms/op 1.37
phase0 processBlock - 250000 vs - 7PWei worstcase 58.073 ms/op 47.652 ms/op 1.22
altair processEth1Data - 250000 vs - 7PWei normalcase 1.0469 ms/op 723.93 us/op 1.45
Tree 40 250000 create 983.54 ms/op 760.88 ms/op 1.29
Tree 40 250000 get(125000) 319.98 ns/op 257.33 ns/op 1.24
Tree 40 250000 set(125000) 3.1747 us/op 2.3515 us/op 1.35
Tree 40 250000 toArray() 37.473 ms/op 29.413 ms/op 1.27
Tree 40 250000 iterate all - toArray() + loop 37.307 ms/op 29.509 ms/op 1.26
Tree 40 250000 iterate all - get(i) 133.09 ms/op 98.359 ms/op 1.35
MutableVector 250000 create 17.040 ms/op 23.734 ms/op 0.72
MutableVector 250000 get(125000) 13.517 ns/op 13.612 ns/op 0.99
MutableVector 250000 set(125000) 879.30 ns/op 478.34 ns/op 1.84
MutableVector 250000 toArray() 7.7758 ms/op 6.6508 ms/op 1.17
MutableVector 250000 iterate all - toArray() + loop 7.6239 ms/op 6.4308 ms/op 1.19
MutableVector 250000 iterate all - get(i) 3.8384 ms/op 3.0369 ms/op 1.26
Array 250000 create 6.8389 ms/op 6.2554 ms/op 1.09
Array 250000 clone - spread 4.1644 ms/op 2.5267 ms/op 1.65
Array 250000 get(125000) 1.6700 ns/op 1.0360 ns/op 1.61
Array 250000 set(125000) 1.8000 ns/op 1.0430 ns/op 1.73
Array 250000 iterate all - loop 141.46 us/op 148.02 us/op 0.96
effectiveBalanceIncrements clone Uint8Array 300000 353.05 us/op 59.158 us/op 5.97
effectiveBalanceIncrements clone MutableVector 300000 839.00 ns/op 719.00 ns/op 1.17
effectiveBalanceIncrements rw all Uint8Array 300000 274.16 us/op 222.66 us/op 1.23
effectiveBalanceIncrements rw all MutableVector 300000 232.09 ms/op 163.20 ms/op 1.42
phase0 afterProcessEpoch - 250000 vs - 7PWei 215.71 ms/op 159.89 ms/op 1.35
phase0 beforeProcessEpoch - 250000 vs - 7PWei 85.759 ms/op 74.089 ms/op 1.16
altair processEpoch - mainnet_e81889 673.83 ms/op 532.97 ms/op 1.26
mainnet_e81889 - altair beforeProcessEpoch 162.88 ms/op 169.07 ms/op 0.96
mainnet_e81889 - altair processJustificationAndFinalization 75.481 us/op 25.980 us/op 2.91
mainnet_e81889 - altair processInactivityUpdates 12.072 ms/op 9.9964 ms/op 1.21
mainnet_e81889 - altair processRewardsAndPenalties 106.44 ms/op 86.141 ms/op 1.24
mainnet_e81889 - altair processRegistryUpdates 17.127 us/op 4.8680 us/op 3.52
mainnet_e81889 - altair processSlashings 4.4360 us/op 1.0100 us/op 4.39
mainnet_e81889 - altair processEth1DataReset 4.4730 us/op 1.0140 us/op 4.41
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.5426 ms/op 2.1081 ms/op 1.21
mainnet_e81889 - altair processSlashingsReset 25.710 us/op 7.1230 us/op 3.61
mainnet_e81889 - altair processRandaoMixesReset 28.598 us/op 9.1900 us/op 3.11
mainnet_e81889 - altair processHistoricalRootsUpdate 4.3600 us/op 1.4050 us/op 3.10
mainnet_e81889 - altair processParticipationFlagUpdates 15.744 us/op 4.1250 us/op 3.82
mainnet_e81889 - altair processSyncCommitteeUpdates 3.8370 us/op 1.6060 us/op 2.39
mainnet_e81889 - altair afterProcessEpoch 218.61 ms/op 218.22 ms/op 1.00
phase0 processEpoch - mainnet_e58758 636.52 ms/op 579.15 ms/op 1.10
mainnet_e58758 - phase0 beforeProcessEpoch 285.38 ms/op 231.33 ms/op 1.23
mainnet_e58758 - phase0 processJustificationAndFinalization 59.921 us/op 32.001 us/op 1.87
mainnet_e58758 - phase0 processRewardsAndPenalties 161.04 ms/op 121.45 ms/op 1.33
mainnet_e58758 - phase0 processRegistryUpdates 33.679 us/op 12.805 us/op 2.63
mainnet_e58758 - phase0 processSlashings 3.1610 us/op 1.0010 us/op 3.16
mainnet_e58758 - phase0 processEth1DataReset 3.4170 us/op 1.3660 us/op 2.50
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.4006 ms/op 2.2824 ms/op 1.05
mainnet_e58758 - phase0 processSlashingsReset 15.308 us/op 8.0700 us/op 1.90
mainnet_e58758 - phase0 processRandaoMixesReset 25.254 us/op 7.5800 us/op 3.33
mainnet_e58758 - phase0 processHistoricalRootsUpdate 4.1770 us/op 1.2880 us/op 3.24
mainnet_e58758 - phase0 processParticipationRecordUpdates 24.040 us/op 7.1590 us/op 3.36
mainnet_e58758 - phase0 afterProcessEpoch 179.65 ms/op 155.59 ms/op 1.15
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.5667 ms/op 2.6932 ms/op 0.95
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.7591 ms/op 2.7772 ms/op 0.99
altair processInactivityUpdates - 250000 normalcase 49.002 ms/op 41.106 ms/op 1.19
altair processInactivityUpdates - 250000 worstcase 60.574 ms/op 51.346 ms/op 1.18
phase0 processRegistryUpdates - 250000 normalcase 28.649 us/op 10.535 us/op 2.72
phase0 processRegistryUpdates - 250000 badcase_full_deposits 551.95 us/op 363.21 us/op 1.52
phase0 processRegistryUpdates - 250000 worstcase 0.5 255.76 ms/op 213.92 ms/op 1.20
altair processRewardsAndPenalties - 250000 normalcase 160.42 ms/op 111.53 ms/op 1.44
altair processRewardsAndPenalties - 250000 worstcase 101.30 ms/op 85.889 ms/op 1.18
phase0 getAttestationDeltas - 250000 normalcase 14.758 ms/op 12.191 ms/op 1.21
phase0 getAttestationDeltas - 250000 worstcase 15.428 ms/op 12.630 ms/op 1.22
phase0 processSlashings - 250000 worstcase 6.6939 ms/op 4.7091 ms/op 1.42
altair processSyncCommitteeUpdates - 250000 360.44 ms/op 263.91 ms/op 1.37
BeaconState.hashTreeRoot - No change 708.00 ns/op 412.00 ns/op 1.72
BeaconState.hashTreeRoot - 1 full validator 85.584 us/op 57.071 us/op 1.50
BeaconState.hashTreeRoot - 32 full validator 771.69 us/op 642.13 us/op 1.20
BeaconState.hashTreeRoot - 512 full validator 10.040 ms/op 6.0297 ms/op 1.67
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 105.30 us/op 73.371 us/op 1.44
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4641 ms/op 1.0951 ms/op 1.34
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.850 ms/op 16.822 ms/op 1.06
BeaconState.hashTreeRoot - 1 balances 74.723 us/op 55.174 us/op 1.35
BeaconState.hashTreeRoot - 32 balances 674.27 us/op 549.64 us/op 1.23
BeaconState.hashTreeRoot - 512 balances 6.9147 ms/op 6.5468 ms/op 1.06
BeaconState.hashTreeRoot - 250000 balances 114.01 ms/op 86.179 ms/op 1.32
aggregationBits - 2048 els - zipIndexesInBitList 36.096 us/op 36.947 us/op 0.98
regular array get 100000 times 57.501 us/op 59.520 us/op 0.97
wrappedArray get 100000 times 56.839 us/op 59.493 us/op 0.96
arrayWithProxy get 100000 times 33.856 ms/op 25.780 ms/op 1.31
ssz.Root.equals 629.00 ns/op 480.00 ns/op 1.31
byteArrayEquals 605.00 ns/op 476.00 ns/op 1.27
shuffle list - 16384 els 11.426 ms/op 9.7327 ms/op 1.17
shuffle list - 250000 els 175.01 ms/op 143.56 ms/op 1.22
processSlot - 1 slots 33.612 us/op 13.140 us/op 2.56
processSlot - 32 slots 2.2411 ms/op 1.7704 ms/op 1.27
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 476.73 us/op 390.84 us/op 1.22
getCommitteeAssignments - req 1 vs - 250000 vc 5.3260 ms/op 5.2691 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 8.0304 ms/op 7.3471 ms/op 1.09
getCommitteeAssignments - req 1000 vs - 250000 vc 8.6168 ms/op 8.1887 ms/op 1.05
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 11.880 ns/op 10.210 ns/op 1.16
state getBlockRootAtSlot - 250000 vs - 7PWei 1.3576 us/op 1.0192 us/op 1.33
computeProposers - vc 250000 20.952 ms/op 14.500 ms/op 1.44
computeEpochShuffling - vc 250000 174.24 ms/op 169.09 ms/op 1.03
getNextSyncCommittee - vc 250000 346.70 ms/op 282.95 ms/op 1.23

by benchmarkbot/action

@wemeetagain wemeetagain merged commit 2a86443 into unstable Sep 8, 2022
@wemeetagain wemeetagain deleted the dapplion/db-filter-opts branch September 8, 2022 15:59
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