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

Use Uint8Array in config getDomain #3475

Merged
merged 1 commit into from
Dec 2, 2021
Merged

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Dec 2, 2021

Motivation

Buffer is a NodeJS specific bytes representation. config's getDomain() should work with Uint8Arrays for greater browser compatibility.

Description

Use Uint8Array in config getDomain. Since getDomain is called only once per domain type the possible overhead is negligible.

@codeclimate
Copy link

codeclimate bot commented Dec 2, 2021

Code Climate has analyzed commit 385780a and detected 0 issues on this pull request.

View more on Code Climate.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 2, 2021

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: b24695d Previous: be50e4e Ratio
BeaconState.hashTreeRoot - No change 581.00 ns/op 627.00 ns/op 0.93
BeaconState.hashTreeRoot - 1 full validator 74.046 us/op 73.655 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 1.0770 ms/op 1.0834 ms/op 0.99
BeaconState.hashTreeRoot - 512 full validator 13.143 ms/op 13.623 ms/op 0.96
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 75.720 us/op 75.417 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2227 ms/op 1.3588 ms/op 0.90
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 16.569 ms/op 17.306 ms/op 0.96
BeaconState.hashTreeRoot - 1 balances 51.124 us/op 53.791 us/op 0.95
BeaconState.hashTreeRoot - 32 balances 467.02 us/op 465.77 us/op 1.00
BeaconState.hashTreeRoot - 512 balances 4.4352 ms/op 4.5505 ms/op 0.97
BeaconState.hashTreeRoot - 250000 balances 80.404 ms/op 84.936 ms/op 0.95
processSlot - 1 slots 31.951 us/op 36.872 us/op 0.87
processSlot - 32 slots 1.9226 ms/op 2.0397 ms/op 0.94
getCommitteeAssignments - req 1 vs - 250000 vc 5.3467 ms/op 5.3312 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 7.4329 ms/op 7.4516 ms/op 1.00
getCommitteeAssignments - req 1000 vs - 250000 vc 7.9773 ms/op 7.9817 ms/op 1.00
computeProposers - vc 250000 19.907 ms/op 21.143 ms/op 0.94
computeEpochShuffling - vc 250000 182.02 ms/op 187.16 ms/op 0.97
getNextSyncCommittee - vc 250000 324.72 ms/op 348.96 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei normalcase 32.479 ms/op 35.491 ms/op 0.92
altair processAttestation - 250000 vs - 7PWei worstcase 39.034 ms/op 42.195 ms/op 0.93
altair processAttestation - setStatus - 1/6 committees join 7.8846 ms/op 9.7761 ms/op 0.81
altair processAttestation - setStatus - 1/3 committees join 15.618 ms/op 20.678 ms/op 0.76
altair processAttestation - setStatus - 1/2 committees join 25.166 ms/op 32.738 ms/op 0.77
altair processAttestation - setStatus - 2/3 committees join 33.977 ms/op 42.285 ms/op 0.80
altair processAttestation - setStatus - 4/5 committees join 44.098 ms/op 51.177 ms/op 0.86
altair processAttestation - setStatus - 100% committees join 48.842 ms/op 63.801 ms/op 0.77
altair processAttestation - updateEpochParticipants - 1/6 committees join 7.7877 ms/op 10.264 ms/op 0.76
altair processAttestation - updateEpochParticipants - 1/3 committees join 18.404 ms/op 21.493 ms/op 0.86
altair processAttestation - updateEpochParticipants - 1/2 committees join 25.138 ms/op 27.005 ms/op 0.93
altair processAttestation - updateEpochParticipants - 2/3 committees join 24.198 ms/op 29.284 ms/op 0.83
altair processAttestation - updateEpochParticipants - 4/5 committees join 25.098 ms/op 31.244 ms/op 0.80
altair processAttestation - updateEpochParticipants - 100% committees join 26.405 ms/op 37.044 ms/op 0.71
altair processAttestation - updateAllStatus 18.340 ms/op 21.939 ms/op 0.84
altair processBlock - 250000 vs - 7PWei normalcase 37.953 ms/op 43.403 ms/op 0.87
altair processBlock - 250000 vs - 7PWei worstcase 104.12 ms/op 111.03 ms/op 0.94
altair processEpoch - mainnet_e81889 894.28 ms/op 954.86 ms/op 0.94
mainnet_e81889 - altair beforeProcessEpoch 253.59 ms/op 339.60 ms/op 0.75
mainnet_e81889 - altair processJustificationAndFinalization 118.98 us/op 61.519 us/op 1.93
mainnet_e81889 - altair processInactivityUpdates 17.354 ms/op 18.823 ms/op 0.92
mainnet_e81889 - altair processRewardsAndPenalties 111.12 ms/op 116.90 ms/op 0.95
mainnet_e81889 - altair processRegistryUpdates 10.532 us/op 5.2840 us/op 1.99
mainnet_e81889 - altair processSlashings 1.0500 us/op 1.0230 us/op 1.03
mainnet_e81889 - altair processEth1DataReset 936.00 ns/op 1.0490 us/op 0.89
mainnet_e81889 - altair processEffectiveBalanceUpdates 11.178 ms/op 12.105 ms/op 0.92
mainnet_e81889 - altair processSlashingsReset 7.5430 us/op 8.3590 us/op 0.90
mainnet_e81889 - altair processRandaoMixesReset 10.640 us/op 11.380 us/op 0.93
mainnet_e81889 - altair processHistoricalRootsUpdate 1.2360 us/op 1.2890 us/op 0.96
mainnet_e81889 - altair processParticipationFlagUpdates 145.03 ms/op 100.25 ms/op 1.45
mainnet_e81889 - altair processSyncCommitteeUpdates 1.8730 us/op 1.0190 us/op 1.84
mainnet_e81889 - altair afterProcessEpoch 216.68 ms/op 223.42 ms/op 0.97
altair processInactivityUpdates - 250000 normalcase 56.965 ms/op 71.486 ms/op 0.80
altair processInactivityUpdates - 250000 worstcase 56.660 ms/op 73.024 ms/op 0.78
altair processParticipationFlagUpdates - 250000 anycase 84.177 ms/op 108.94 ms/op 0.77
altair processRewardsAndPenalties - 250000 normalcase 110.47 ms/op 110.27 ms/op 1.00
altair processRewardsAndPenalties - 250000 worstcase 125.96 ms/op 114.49 ms/op 1.10
altair processSyncCommitteeUpdates - 250000 342.91 ms/op 367.29 ms/op 0.93
Tree 40 250000 create 422.09 ms/op 547.68 ms/op 0.77
Tree 40 250000 get(125000) 330.87 ns/op 330.79 ns/op 1.00
Tree 40 250000 set(125000) 1.3127 us/op 1.6433 us/op 0.80
Tree 40 250000 toArray() 35.153 ms/op 42.804 ms/op 0.82
Tree 40 250000 iterate all - toArray() + loop 35.210 ms/op 43.216 ms/op 0.81
Tree 40 250000 iterate all - get(i) 115.73 ms/op 121.07 ms/op 0.96
MutableVector 250000 create 21.763 ms/op 27.555 ms/op 0.79
MutableVector 250000 get(125000) 14.182 ns/op 14.201 ns/op 1.00
MutableVector 250000 set(125000) 435.14 ns/op 573.02 ns/op 0.76
MutableVector 250000 toArray() 7.7014 ms/op 8.6202 ms/op 0.89
MutableVector 250000 iterate all - toArray() + loop 7.9541 ms/op 8.7908 ms/op 0.90
MutableVector 250000 iterate all - get(i) 3.1165 ms/op 3.1404 ms/op 0.99
Array 250000 create 4.7281 ms/op 5.7084 ms/op 0.83
Array 250000 clone - spread 1.9995 ms/op 2.0300 ms/op 0.98
Array 250000 get(125000) 0.97600 ns/op 0.93600 ns/op 1.04
Array 250000 set(125000) 0.97400 ns/op 0.96500 ns/op 1.01
Array 250000 iterate all - loop 167.76 us/op 168.85 us/op 0.99
aggregationBits - 2048 els - readonlyValues 226.46 us/op 225.25 us/op 1.01
aggregationBits - 2048 els - zipIndexesInBitList 35.222 us/op 41.988 us/op 0.84
regular array get 100000 times 67.460 us/op 67.425 us/op 1.00
wrappedArray get 100000 times 67.416 us/op 67.836 us/op 0.99
arrayWithProxy get 100000 times 30.422 ms/op 28.941 ms/op 1.05
ssz.Root.equals 1.0320 us/op 1.1610 us/op 0.89
ssz.Root.equals with valueOf() 1.2160 us/op 1.4770 us/op 0.82
byteArrayEquals with valueOf() 1.1960 us/op 1.3590 us/op 0.88
phase0 processBlock - 250000 vs - 7PWei normalcase 9.7999 ms/op 10.620 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei worstcase 69.467 ms/op 73.446 ms/op 0.95
phase0 afterProcessEpoch - 250000 vs - 7PWei 203.44 ms/op 204.56 ms/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 533.09 ms/op 566.84 ms/op 0.94
phase0 processEpoch - mainnet_e58758 719.29 ms/op 789.82 ms/op 0.91
mainnet_e58758 - phase0 beforeProcessEpoch 420.10 ms/op 481.51 ms/op 0.87
mainnet_e58758 - phase0 processJustificationAndFinalization 115.33 us/op 47.224 us/op 2.44
mainnet_e58758 - phase0 processRewardsAndPenalties 94.988 ms/op 102.08 ms/op 0.93
mainnet_e58758 - phase0 processRegistryUpdates 65.618 us/op 32.977 us/op 1.99
mainnet_e58758 - phase0 processSlashings 2.5640 us/op 1.1400 us/op 2.25
mainnet_e58758 - phase0 processEth1DataReset 2.2390 us/op 1.0700 us/op 2.09
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 9.8484 ms/op 9.2971 ms/op 1.06
mainnet_e58758 - phase0 processSlashingsReset 12.962 us/op 6.8260 us/op 1.90
mainnet_e58758 - phase0 processRandaoMixesReset 23.384 us/op 10.705 us/op 2.18
mainnet_e58758 - phase0 processHistoricalRootsUpdate 2.5230 us/op 1.1860 us/op 2.13
mainnet_e58758 - phase0 processParticipationRecordUpdates 15.225 us/op 7.8060 us/op 1.95
mainnet_e58758 - phase0 afterProcessEpoch 180.34 ms/op 179.07 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 normalcase 11.350 ms/op 11.290 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.0209 s/op 1.2350 s/op 0.83
phase0 processRegistryUpdates - 250000 normalcase 60.530 us/op 33.323 us/op 1.82
phase0 processRegistryUpdates - 250000 badcase_full_deposits 2.7432 ms/op 2.7994 ms/op 0.98
phase0 processRegistryUpdates - 250000 worstcase 0.5 1.1622 s/op 1.5452 s/op 0.75
phase0 getAttestationDeltas - 250000 normalcase 37.104 ms/op 37.048 ms/op 1.00
phase0 getAttestationDeltas - 250000 worstcase 36.797 ms/op 37.488 ms/op 0.98
phase0 processSlashings - 250000 worstcase 27.904 ms/op 32.771 ms/op 0.85
shuffle list - 16384 els 12.705 ms/op 13.086 ms/op 0.97
shuffle list - 250000 els 182.09 ms/op 180.50 ms/op 1.01
getEffectiveBalances - 250000 vs - 7PWei 11.145 ms/op 14.461 ms/op 0.77
computeDeltas 3.4331 ms/op 3.9529 ms/op 0.87
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.7766 ms/op 2.3440 ms/op 0.76
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 647.34 us/op 699.79 us/op 0.93
BLS verify - blst-native 1.8580 ms/op 1.8542 ms/op 1.00
BLS verifyMultipleSignatures 3 - blst-native 3.8187 ms/op 3.8094 ms/op 1.00
BLS verifyMultipleSignatures 8 - blst-native 8.2350 ms/op 8.2057 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst-native 29.845 ms/op 29.785 ms/op 1.00
BLS aggregatePubkeys 32 - blst-native 39.809 us/op 39.112 us/op 1.02
BLS aggregatePubkeys 128 - blst-native 153.84 us/op 153.26 us/op 1.00
getAttestationsForBlock 73.538 ms/op 95.471 ms/op 0.77
CheckpointStateCache - add get delete 14.976 us/op 15.476 us/op 0.97
validate gossip signedAggregateAndProof - struct 4.5295 ms/op 4.5095 ms/op 1.00
validate gossip signedAggregateAndProof - treeBacked 4.3866 ms/op 4.4077 ms/op 1.00
validate gossip attestation - struct 2.0865 ms/op 2.0863 ms/op 1.00
validate gossip attestation - treeBacked 2.0952 ms/op 2.1124 ms/op 0.99
Object access 1 prop 0.30200 ns/op 0.32500 ns/op 0.93
Map access 1 prop 0.27300 ns/op 0.28000 ns/op 0.97
Object get x1000 18.447 ns/op 17.785 ns/op 1.04
Map get x1000 0.99900 ns/op 0.95900 ns/op 1.04
Object set x1000 97.600 ns/op 110.13 ns/op 0.89
Map set x1000 59.083 ns/op 67.141 ns/op 0.88
Return object 10000 times 0.36870 ns/op 0.36630 ns/op 1.01
Throw Error 10000 times 5.7980 us/op 5.7738 us/op 1.00

by benchmarkbot/action

@codecov
Copy link

codecov bot commented Dec 2, 2021

Codecov Report

Merging #3475 (385780a) into master (be50e4e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #3475   +/-   ##
=======================================
  Coverage   37.82%   37.82%           
=======================================
  Files         307      307           
  Lines        8092     8092           
  Branches     1245     1245           
=======================================
  Hits         3061     3061           
  Misses       4879     4879           
  Partials      152      152           

@wemeetagain wemeetagain merged commit 000aec9 into master Dec 2, 2021
@wemeetagain wemeetagain deleted the dapplion/config-buffer branch December 2, 2021 20:53
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