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: support full uint64 range on simpleserialize.com #327

Merged
merged 1 commit into from
Jul 7, 2023

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Jul 7, 2023

Motivation

Closes #326

Description

Patch SSZ types to support full uint64 range on simpleserialize.com

Based on approach used to pass the ssz_static spec tests, see replaceUintTypeWithUintBigintType

@nflaig nflaig requested a review from a team as a code owner July 7, 2023 18:43
@github-actions
Copy link

github-actions bot commented Jul 7, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: fc6941c Previous: 424b426 Ratio
digestTwoHashObjects 50023 times 57.882 ms/op 71.954 ms/op 0.80
digest64 50023 times 60.331 ms/op 76.204 ms/op 0.79
digest 50023 times 60.224 ms/op 76.420 ms/op 0.79
input length 32 1.4610 us/op 1.8190 us/op 0.80
input length 64 1.5860 us/op 1.9570 us/op 0.81
input length 128 2.7660 us/op 3.3660 us/op 0.82
input length 256 4.1430 us/op 4.9690 us/op 0.83
input length 512 6.8540 us/op 8.2010 us/op 0.84
input length 1024 13.496 us/op 16.485 us/op 0.82
digest 1000000 times 1.0389 s/op 1.3400 s/op 0.78
hashObjectToByteArray 50023 times 2.3868 ms/op 2.9160 ms/op 0.82
byteArrayToHashObject 50023 times 2.7603 ms/op 3.5609 ms/op 0.78
getGindicesAtDepth 6.0320 us/op 7.5680 us/op 0.80
iterateAtDepth 12.747 us/op 15.301 us/op 0.83
getGindexBits 556.00 ns/op 712.00 ns/op 0.78
gindexIterator 1.2140 us/op 1.5930 us/op 0.76
hash 2 Uint8Array 2250026 times - as-sha256 2.7455 s/op 3.3396 s/op 0.82
hashTwoObjects 2250026 times - as-sha256 2.6221 s/op 3.1476 s/op 0.83
hash 2 Uint8Array 2250026 times - noble 7.0037 s/op 11.176 s/op 0.63
hashTwoObjects 2250026 times - noble 10.482 s/op 14.279 s/op 0.73
getNodeH() x7812.5 avg hindex 20.814 us/op 29.523 us/op 0.71
getNodeH() x7812.5 index 0 8.3710 us/op 10.535 us/op 0.79
getNodeH() x7812.5 index 7 8.2390 us/op 10.493 us/op 0.79
getNodeH() x7812.5 index 7 with key array 8.2830 us/op 10.620 us/op 0.78
new LeafNode() x7812.5 198.39 us/op 375.93 us/op 0.53
multiproof - depth 15, 1 requested leaves 13.040 us/op 18.273 us/op 0.71
tree offset multiproof - depth 15, 1 requested leaves 29.255 us/op 40.358 us/op 0.72
compact multiproof - depth 15, 1 requested leaves 8.1640 us/op 10.022 us/op 0.81
multiproof - depth 15, 2 requested leaves 20.387 us/op 23.869 us/op 0.85
tree offset multiproof - depth 15, 2 requested leaves 36.758 us/op 42.270 us/op 0.87
compact multiproof - depth 15, 2 requested leaves 4.8950 us/op 5.7290 us/op 0.85
multiproof - depth 15, 3 requested leaves 27.755 us/op 34.297 us/op 0.81
tree offset multiproof - depth 15, 3 requested leaves 47.409 us/op 55.751 us/op 0.85
compact multiproof - depth 15, 3 requested leaves 9.0020 us/op 11.642 us/op 0.77
multiproof - depth 15, 4 requested leaves 34.385 us/op 43.812 us/op 0.78
tree offset multiproof - depth 15, 4 requested leaves 55.553 us/op 72.380 us/op 0.77
compact multiproof - depth 15, 4 requested leaves 8.5020 us/op 10.945 us/op 0.78
packedRootsBytesToLeafNodes bytes 4000 offset 0 3.6230 us/op 4.3620 us/op 0.83
packedRootsBytesToLeafNodes bytes 4000 offset 1 3.6280 us/op 4.3030 us/op 0.84
packedRootsBytesToLeafNodes bytes 4000 offset 2 3.6960 us/op 4.1200 us/op 0.90
packedRootsBytesToLeafNodes bytes 4000 offset 3 3.6240 us/op 4.1850 us/op 0.87
subtreeFillToContents depth 40 count 250000 80.721 ms/op 99.087 ms/op 0.81
setRoot - gindexBitstring 14.028 ms/op 16.396 ms/op 0.86
setRoot - gindex 14.776 ms/op 17.176 ms/op 0.86
getRoot - gindexBitstring 3.6748 ms/op 4.3627 ms/op 0.84
getRoot - gindex 4.4451 ms/op 5.2439 ms/op 0.85
getHashObject then setHashObject 16.727 ms/op 19.660 ms/op 0.85
setNodeWithFn 13.671 ms/op 16.319 ms/op 0.84
getNodeAtDepth depth 0 x100000 2.2887 ms/op 2.7441 ms/op 0.83
setNodeAtDepth depth 0 x100000 4.1415 ms/op 5.5937 ms/op 0.74
getNodesAtDepth depth 0 x100000 1.8213 ms/op 2.2724 ms/op 0.80
setNodesAtDepth depth 0 x100000 2.5200 ms/op 2.9080 ms/op 0.87
getNodeAtDepth depth 1 x100000 2.2271 ms/op 2.7632 ms/op 0.81
setNodeAtDepth depth 1 x100000 10.001 ms/op 11.635 ms/op 0.86
getNodesAtDepth depth 1 x100000 1.9961 ms/op 2.4039 ms/op 0.83
setNodesAtDepth depth 1 x100000 8.2496 ms/op 9.2668 ms/op 0.89
getNodeAtDepth depth 2 x100000 2.8261 ms/op 3.3596 ms/op 0.84
setNodeAtDepth depth 2 x100000 16.489 ms/op 19.549 ms/op 0.84
getNodesAtDepth depth 2 x100000 28.229 ms/op 34.341 ms/op 0.82
setNodesAtDepth depth 2 x100000 22.526 ms/op 28.957 ms/op 0.78
tree.getNodesAtDepth - gindexes 9.4156 ms/op 11.643 ms/op 0.81
tree.getNodesAtDepth - push all nodes 2.8533 ms/op 3.7390 ms/op 0.76
tree.getNodesAtDepth - navigation 169.22 us/op 204.65 us/op 0.83
tree.setNodesAtDepth - indexes 591.40 us/op 757.39 us/op 0.78
set at depth 8 788.00 ns/op 932.00 ns/op 0.85
set at depth 16 1.0040 us/op 1.2410 us/op 0.81
set at depth 32 1.5600 us/op 1.8840 us/op 0.83
iterateNodesAtDepth 8 256 23.247 us/op 28.085 us/op 0.83
getNodesAtDepth 8 256 5.8630 us/op 7.0530 us/op 0.83
iterateNodesAtDepth 16 65536 6.6916 ms/op 7.8866 ms/op 0.85
getNodesAtDepth 16 65536 2.6645 ms/op 3.1553 ms/op 0.84
iterateNodesAtDepth 32 250000 24.676 ms/op 29.455 ms/op 0.84
getNodesAtDepth 32 250000 7.4524 ms/op 8.7048 ms/op 0.86
iterateNodesAtDepth 40 250000 24.885 ms/op 29.518 ms/op 0.84
getNodesAtDepth 40 250000 7.5941 ms/op 9.1829 ms/op 0.83
250k validators 11.564 s/op 15.091 s/op 0.77
bitlist bytes to struct (120,90) 1.1530 us/op 1.2680 us/op 0.91
bitlist bytes to tree (120,90) 3.6470 us/op 4.4700 us/op 0.82
bitlist bytes to struct (2048,2048) 1.8130 us/op 2.2890 us/op 0.79
bitlist bytes to tree (2048,2048) 6.5060 us/op 7.9700 us/op 0.82
ByteListType - deserialize 17.298 ms/op 21.139 ms/op 0.82
BasicListType - deserialize 15.858 ms/op 18.531 ms/op 0.86
ByteListType - serialize 18.082 ms/op 22.264 ms/op 0.81
BasicListType - serialize 20.144 ms/op 27.749 ms/op 0.73
BasicListType - tree_convertToStruct 41.503 ms/op 49.192 ms/op 0.84
List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate 5.5704 ms/op 7.3802 ms/op 0.75
List[uint8, 68719476736] len 300000 ViewDU.get(i) 6.3223 ms/op 7.5909 ms/op 0.83
Array.push len 300000 empty Array - number 8.2113 ms/op 9.3558 ms/op 0.88
Array.set len 300000 from new Array - number 2.7241 ms/op 3.1044 ms/op 0.88
Array.set len 300000 - number 8.8495 ms/op 10.339 ms/op 0.86
Uint8Array.set len 300000 258.94 us/op 307.73 us/op 0.84
Uint32Array.set len 300000 418.61 us/op 486.46 us/op 0.86
Container({a: uint8, b: uint8}) getViewDU x300000 33.774 ms/op 40.347 ms/op 0.84
ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 12.466 ms/op 15.434 ms/op 0.81
List(Container) len 300000 ViewDU.getAllReadonly() + iterate 381.52 ms/op 654.82 ms/op 0.58
List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate 466.53 ms/op 553.78 ms/op 0.84
List(Container) len 300000 ViewDU.get(i) 11.565 ms/op 17.891 ms/op 0.65
List(Container) len 300000 ViewDU.getReadonly(i) 12.213 ms/op 17.195 ms/op 0.71
List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate 58.318 ms/op 68.792 ms/op 0.85
List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate 8.2299 ms/op 9.2569 ms/op 0.89
List(ContainerNodeStruct) len 300000 ViewDU.get(i) 11.102 ms/op 13.524 ms/op 0.82
List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) 11.274 ms/op 13.529 ms/op 0.83
Array.push len 300000 empty Array - object 8.2686 ms/op 9.9088 ms/op 0.83
Array.set len 300000 from new Array - object 2.7193 ms/op 3.9871 ms/op 0.68
Array.set len 300000 - object 9.6261 ms/op 10.127 ms/op 0.95
cachePermanentRootStruct no cache 12.027 us/op 14.991 us/op 0.80
cachePermanentRootStruct with cache 300.00 ns/op 374.00 ns/op 0.80
epochParticipation len 250000 rws 7813 3.2620 ms/op 3.9430 ms/op 0.83
deserialize Attestation - tree 4.4140 us/op 5.6710 us/op 0.78
deserialize Attestation - struct 2.9580 us/op 3.7620 us/op 0.79
deserialize SignedAggregateAndProof - tree 5.7510 us/op 7.3520 us/op 0.78
deserialize SignedAggregateAndProof - struct 5.0220 us/op 6.0580 us/op 0.83
deserialize SyncCommitteeMessage - tree 1.4730 us/op 1.9190 us/op 0.77
deserialize SyncCommitteeMessage - struct 1.8920 us/op 2.2800 us/op 0.83
deserialize SignedContributionAndProof - tree 2.7870 us/op 3.9540 us/op 0.70
deserialize SignedContributionAndProof - struct 3.8420 us/op 5.3550 us/op 0.72
deserialize SignedBeaconBlock - tree 337.02 us/op 432.46 us/op 0.78
deserialize SignedBeaconBlock - struct 205.80 us/op 278.17 us/op 0.74
BeaconState vc 300000 - deserialize tree 1.0113 s/op 1.1879 s/op 0.85
BeaconState vc 300000 - serialize tree 303.43 ms/op 338.56 ms/op 0.90
BeaconState.historicalRoots vc 300000 - deserialize tree 1.4300 us/op 1.3620 us/op 1.05
BeaconState.historicalRoots vc 300000 - serialize tree 1.5540 us/op 1.5360 us/op 1.01
BeaconState.validators vc 300000 - deserialize tree 962.76 ms/op 1.1528 s/op 0.84
BeaconState.validators vc 300000 - serialize tree 237.64 ms/op 296.56 ms/op 0.80
BeaconState.balances vc 300000 - deserialize tree 39.100 ms/op 43.553 ms/op 0.90
BeaconState.balances vc 300000 - serialize tree 5.5261 ms/op 7.3218 ms/op 0.75
BeaconState.previousEpochParticipation vc 300000 - deserialize tree 726.02 us/op 952.54 us/op 0.76
BeaconState.previousEpochParticipation vc 300000 - serialize tree 453.51 us/op 549.41 us/op 0.83
BeaconState.currentEpochParticipation vc 300000 - deserialize tree 708.18 us/op 932.50 us/op 0.76
BeaconState.currentEpochParticipation vc 300000 - serialize tree 457.80 us/op 542.25 us/op 0.84
BeaconState.inactivityScores vc 300000 - deserialize tree 39.642 ms/op 46.199 ms/op 0.86
BeaconState.inactivityScores vc 300000 - serialize tree 6.5322 ms/op 4.8675 ms/op 1.34
hashTreeRoot Attestation - struct 45.540 us/op 37.432 us/op 1.22
hashTreeRoot Attestation - tree 22.700 us/op 26.725 us/op 0.85
hashTreeRoot SignedAggregateAndProof - struct 59.050 us/op 55.654 us/op 1.06
hashTreeRoot SignedAggregateAndProof - tree 35.659 us/op 41.980 us/op 0.85
hashTreeRoot SyncCommitteeMessage - struct 14.922 us/op 14.162 us/op 1.05
hashTreeRoot SyncCommitteeMessage - tree 7.6520 us/op 9.2760 us/op 0.82
hashTreeRoot SignedContributionAndProof - struct 39.739 us/op 39.381 us/op 1.01
hashTreeRoot SignedContributionAndProof - tree 26.192 us/op 28.188 us/op 0.93
hashTreeRoot SignedBeaconBlock - struct 3.3676 ms/op 3.6571 ms/op 0.92
hashTreeRoot SignedBeaconBlock - tree 2.0336 ms/op 2.4954 ms/op 0.81
hashTreeRoot Validator - struct 18.987 us/op 20.543 us/op 0.92
hashTreeRoot Validator - tree 14.668 us/op 16.774 us/op 0.87
BeaconState vc 300000 - hashTreeRoot tree 4.7214 s/op 5.5831 s/op 0.85
BeaconState.historicalRoots vc 300000 - hashTreeRoot tree 1.8820 us/op 2.2510 us/op 0.84
BeaconState.validators vc 300000 - hashTreeRoot tree 4.4379 s/op 5.2485 s/op 0.85
BeaconState.balances vc 300000 - hashTreeRoot tree 104.70 ms/op 137.04 ms/op 0.76
BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree 11.036 ms/op 13.310 ms/op 0.83
BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree 11.044 ms/op 13.309 ms/op 0.83
BeaconState.inactivityScores vc 300000 - hashTreeRoot tree 103.38 ms/op 141.92 ms/op 0.73
hash64 x18 24.621 us/op 29.408 us/op 0.84
hashTwoObjects x18 21.927 us/op 25.685 us/op 0.85
hash64 x1740 2.3116 ms/op 2.7745 ms/op 0.83
hashTwoObjects x1740 2.0789 ms/op 2.4455 ms/op 0.85
hash64 x2700000 3.5926 s/op 4.2829 s/op 0.84
hashTwoObjects x2700000 3.2300 s/op 3.8507 s/op 0.84
get_exitEpoch - ContainerType 486.00 ns/op 598.00 ns/op 0.81
get_exitEpoch - ContainerNodeStructType 412.00 ns/op 492.00 ns/op 0.84
set_exitEpoch - ContainerType 448.00 ns/op 558.00 ns/op 0.80
set_exitEpoch - ContainerNodeStructType 312.00 ns/op 525.00 ns/op 0.59
get_pubkey - ContainerType 1.5820 us/op 1.9600 us/op 0.81
get_pubkey - ContainerNodeStructType 301.00 ns/op 368.00 ns/op 0.82
hashTreeRoot - ContainerType 514.00 ns/op 591.00 ns/op 0.87
hashTreeRoot - ContainerNodeStructType 557.00 ns/op 701.00 ns/op 0.79
createProof - ContainerType 6.4000 us/op 7.5710 us/op 0.85
createProof - ContainerNodeStructType 34.958 us/op 41.317 us/op 0.85
serialize - ContainerType 2.9910 us/op 3.5400 us/op 0.84
serialize - ContainerNodeStructType 2.3500 us/op 2.9130 us/op 0.81
set_exitEpoch_and_hashTreeRoot - ContainerType 5.3060 us/op 6.7070 us/op 0.79
set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType 15.092 us/op 18.693 us/op 0.81
Array - for of 10.590 us/op 12.697 us/op 0.83
Array - for(;;) 7.2070 us/op 8.6780 us/op 0.83
basicListValue.readonlyValuesArray() 5.3953 ms/op 6.8312 ms/op 0.79
basicListValue.readonlyValuesArray() + loop all 5.5112 ms/op 6.9100 ms/op 0.80
compositeListValue.readonlyValuesArray() 41.695 ms/op 44.457 ms/op 0.94
compositeListValue.readonlyValuesArray() + loop all 36.810 ms/op 45.744 ms/op 0.80
Number64UintType - get balances list 6.0899 ms/op 7.2948 ms/op 0.83
Number64UintType - set balances list 15.281 ms/op 16.276 ms/op 0.94
Number64UintType - get and increase 10 then set 58.673 ms/op 67.958 ms/op 0.86
Number64UintType - increase 10 using applyDelta 25.473 ms/op 29.416 ms/op 0.87
Number64UintType - increase 10 using applyDeltaInBatch 25.532 ms/op 29.653 ms/op 0.86
tree_newTreeFromUint64Deltas 26.748 ms/op 32.880 ms/op 0.81
unsafeUint8ArrayToTree 46.401 ms/op 55.172 ms/op 0.84
bitLength(50) 293.00 ns/op 352.00 ns/op 0.83
bitLengthStr(50) 362.00 ns/op 428.00 ns/op 0.85
bitLength(8000) 298.00 ns/op 356.00 ns/op 0.84
bitLengthStr(8000) 490.00 ns/op 587.00 ns/op 0.83
bitLength(250000) 292.00 ns/op 358.00 ns/op 0.82
bitLengthStr(250000) 594.00 ns/op 698.00 ns/op 0.85
floor - Math.floor (53) 0.66974 ns/op 0.80454 ns/op 0.83
floor - << 0 (53) 0.66998 ns/op 0.80429 ns/op 0.83
floor - Math.floor (512) 0.66973 ns/op 0.80409 ns/op 0.83
floor - << 0 (512) 0.66987 ns/op 0.80403 ns/op 0.83
fnIf(0) 2.6784 ns/op 3.2150 ns/op 0.83
fnSwitch(0) 5.0212 ns/op 6.0318 ns/op 0.83
fnObj(0) 0.66993 ns/op 0.80424 ns/op 0.83
fnArr(0) 0.66983 ns/op 0.80400 ns/op 0.83
fnIf(4) 4.3525 ns/op 5.2256 ns/op 0.83
fnSwitch(4) 5.0220 ns/op 6.0286 ns/op 0.83
fnObj(4) 0.66983 ns/op 0.80404 ns/op 0.83
fnArr(4) 0.66989 ns/op 0.80403 ns/op 0.83
fnIf(9) 6.6955 ns/op 8.0400 ns/op 0.83
fnSwitch(9) 5.0215 ns/op 6.0287 ns/op 0.83
fnObj(9) 0.66990 ns/op 0.80409 ns/op 0.83
fnArr(9) 0.66989 ns/op 0.80430 ns/op 0.83
Container {a,b,vec} - as struct x100000 67.321 us/op 80.856 us/op 0.83
Container {a,b,vec} - as tree x100000 837.56 us/op 1.0048 ms/op 0.83
Container {a,vec,b} - as struct x100000 100.81 us/op 121.00 us/op 0.83
Container {a,vec,b} - as tree x100000 904.14 us/op 1.0855 ms/op 0.83
get 2 props x1000000 - rawObject 335.07 us/op 402.40 us/op 0.83
get 2 props x1000000 - proxy 133.36 ms/op 160.52 ms/op 0.83
get 2 props x1000000 - customObj 335.11 us/op 402.84 us/op 0.83
Simple object binary -> struct 843.00 ns/op 948.00 ns/op 0.89
Simple object binary -> tree_backed 2.4250 us/op 2.8130 us/op 0.86
Simple object struct -> tree_backed 3.1020 us/op 3.7160 us/op 0.83
Simple object tree_backed -> struct 2.6200 us/op 3.2870 us/op 0.80
Simple object struct -> binary 1.3420 us/op 1.7230 us/op 0.78
Simple object tree_backed -> binary 2.3890 us/op 3.0010 us/op 0.80
aggregationBits binary -> struct 701.00 ns/op 808.00 ns/op 0.87
aggregationBits binary -> tree_backed 3.2020 us/op 4.0050 us/op 0.80
aggregationBits struct -> tree_backed 4.1000 us/op 4.8690 us/op 0.84
aggregationBits tree_backed -> struct 1.6250 us/op 2.0240 us/op 0.80
aggregationBits struct -> binary 1.1480 us/op 1.5220 us/op 0.75
aggregationBits tree_backed -> binary 1.4240 us/op 1.7520 us/op 0.81
List(uint8) 100000 binary -> struct 1.9664 ms/op 2.2165 ms/op 0.89
List(uint8) 100000 binary -> tree_backed 162.06 us/op 186.19 us/op 0.87
List(uint8) 100000 struct -> tree_backed 2.1516 ms/op 2.5125 ms/op 0.86
List(uint8) 100000 tree_backed -> struct 1.5136 ms/op 1.7674 ms/op 0.86
List(uint8) 100000 struct -> binary 1.9307 ms/op 2.2892 ms/op 0.84
List(uint8) 100000 tree_backed -> binary 146.82 us/op 168.82 us/op 0.87
List(uint64Number) 100000 binary -> struct 1.7117 ms/op 2.0001 ms/op 0.86
List(uint64Number) 100000 binary -> tree_backed 5.6611 ms/op 6.4006 ms/op 0.88
List(uint64Number) 100000 struct -> tree_backed 8.1562 ms/op 9.5213 ms/op 0.86
List(uint64Number) 100000 tree_backed -> struct 3.0981 ms/op 3.7990 ms/op 0.82
List(uint64Number) 100000 struct -> binary 2.2716 ms/op 2.7629 ms/op 0.82
List(uint64Number) 100000 tree_backed -> binary 1.5863 ms/op 1.9558 ms/op 0.81
List(Uint64Bigint) 100000 binary -> struct 5.1232 ms/op 6.4068 ms/op 0.80
List(Uint64Bigint) 100000 binary -> tree_backed 5.6860 ms/op 6.5700 ms/op 0.87
List(Uint64Bigint) 100000 struct -> tree_backed 9.1307 ms/op 10.878 ms/op 0.84
List(Uint64Bigint) 100000 tree_backed -> struct 6.9007 ms/op 8.6961 ms/op 0.79
List(Uint64Bigint) 100000 struct -> binary 2.9446 ms/op 3.4912 ms/op 0.84
List(Uint64Bigint) 100000 tree_backed -> binary 1.6716 ms/op 1.9613 ms/op 0.85
Vector(Root) 100000 binary -> struct 54.153 ms/op 61.582 ms/op 0.88
Vector(Root) 100000 binary -> tree_backed 50.096 ms/op 65.884 ms/op 0.76
Vector(Root) 100000 struct -> tree_backed 63.709 ms/op 76.413 ms/op 0.83
Vector(Root) 100000 tree_backed -> struct 78.874 ms/op 85.290 ms/op 0.92
Vector(Root) 100000 struct -> binary 3.2316 ms/op 3.7747 ms/op 0.86
Vector(Root) 100000 tree_backed -> binary 19.949 ms/op 16.025 ms/op 1.24
List(Validator) 100000 binary -> struct 199.73 ms/op 217.52 ms/op 0.92
List(Validator) 100000 binary -> tree_backed 494.74 ms/op 561.24 ms/op 0.88
List(Validator) 100000 struct -> tree_backed 544.38 ms/op 648.60 ms/op 0.84
List(Validator) 100000 tree_backed -> struct 298.87 ms/op 362.87 ms/op 0.82
List(Validator) 100000 struct -> binary 47.214 ms/op 57.633 ms/op 0.82
List(Validator) 100000 tree_backed -> binary 132.13 ms/op 163.55 ms/op 0.81
List(Validator-NS) 100000 binary -> struct 198.64 ms/op 240.26 ms/op 0.83
List(Validator-NS) 100000 binary -> tree_backed 270.76 ms/op 316.01 ms/op 0.86
List(Validator-NS) 100000 struct -> tree_backed 331.01 ms/op 391.67 ms/op 0.85
List(Validator-NS) 100000 tree_backed -> struct 274.50 ms/op 329.13 ms/op 0.83
List(Validator-NS) 100000 struct -> binary 46.874 ms/op 56.102 ms/op 0.84
List(Validator-NS) 100000 tree_backed -> binary 54.897 ms/op 63.975 ms/op 0.86
get epochStatuses - MutableVector 122.52 us/op 140.43 us/op 0.87
get epochStatuses - ViewDU 281.40 us/op 338.51 us/op 0.83
set epochStatuses - ListTreeView 2.1488 ms/op 2.4744 ms/op 0.87
set epochStatuses - ListTreeView - set() 610.83 us/op 734.12 us/op 0.83
set epochStatuses - ListTreeView - commit() 645.20 us/op 749.42 us/op 0.86
bitstring 748.48 ns/op 897.68 ns/op 0.83
bit mask 12.760 ns/op 15.360 ns/op 0.83
struct - increase slot to 1000000 2.1859 ms/op 2.6267 ms/op 0.83
UintNumberType - increase slot to 1000000 47.844 ms/op 59.181 ms/op 0.81
UintBigintType - increase slot to 1000000 621.16 ms/op 731.29 ms/op 0.85
UintBigint8 x 100000 tree_deserialize 6.9739 ms/op 9.5016 ms/op 0.73
UintBigint8 x 100000 tree_serialize 2.0420 ms/op 2.4304 ms/op 0.84
UintBigint16 x 100000 tree_deserialize 6.5727 ms/op 9.6428 ms/op 0.68
UintBigint16 x 100000 tree_serialize 2.1569 ms/op 1.3983 ms/op 1.54
UintBigint32 x 100000 tree_deserialize 7.3334 ms/op 9.5877 ms/op 0.76
UintBigint32 x 100000 tree_serialize 1.9126 ms/op 2.5093 ms/op 0.76
UintBigint64 x 100000 tree_deserialize 8.6405 ms/op 11.268 ms/op 0.77
UintBigint64 x 100000 tree_serialize 2.5325 ms/op 3.2807 ms/op 0.77
UintBigint8 x 100000 value_deserialize 870.50 us/op 1.0450 ms/op 0.83
UintBigint8 x 100000 value_serialize 1.1912 ms/op 1.5444 ms/op 0.77
UintBigint16 x 100000 value_deserialize 934.30 us/op 1.1180 ms/op 0.84
UintBigint16 x 100000 value_serialize 1.3055 ms/op 1.7238 ms/op 0.76
UintBigint32 x 100000 value_deserialize 842.36 us/op 1.0084 ms/op 0.84
UintBigint32 x 100000 value_serialize 1.2919 ms/op 1.6840 ms/op 0.77
UintBigint64 x 100000 value_deserialize 886.32 us/op 1.0890 ms/op 0.81
UintBigint64 x 100000 value_serialize 1.4851 ms/op 1.8802 ms/op 0.79
UintBigint8 x 100000 deserialize 6.7565 ms/op 8.0396 ms/op 0.84
UintBigint8 x 100000 serialize 2.5414 ms/op 3.1433 ms/op 0.81
UintBigint16 x 100000 deserialize 7.0372 ms/op 8.3254 ms/op 0.85
UintBigint16 x 100000 serialize 2.5395 ms/op 3.1827 ms/op 0.80
UintBigint32 x 100000 deserialize 8.1988 ms/op 9.7740 ms/op 0.84
UintBigint32 x 100000 serialize 4.3845 ms/op 5.2074 ms/op 0.84
UintBigint64 x 100000 deserialize 5.2728 ms/op 6.4865 ms/op 0.81
UintBigint64 x 100000 serialize 2.4194 ms/op 2.9357 ms/op 0.82
UintBigint128 x 100000 deserialize 8.4541 ms/op 10.053 ms/op 0.84
UintBigint128 x 100000 serialize 26.988 ms/op 33.558 ms/op 0.80
UintBigint256 x 100000 deserialize 15.395 ms/op 18.918 ms/op 0.81
UintBigint256 x 100000 serialize 82.316 ms/op 98.422 ms/op 0.84
Slice from Uint8Array x25000 1.5836 ms/op 1.8434 ms/op 0.86
Slice from ArrayBuffer x25000 31.021 ms/op 34.533 ms/op 0.90
Slice from ArrayBuffer x25000 + new Uint8Array 33.458 ms/op 37.715 ms/op 0.89
Copy Uint8Array 100000 iterate 1.4808 ms/op 1.7642 ms/op 0.84
Copy Uint8Array 100000 slice 165.25 us/op 156.92 us/op 1.05
Copy Uint8Array 100000 Uint8Array.prototype.slice.call 161.83 us/op 166.57 us/op 0.97
Copy Buffer 100000 Uint8Array.prototype.slice.call 169.76 us/op 164.95 us/op 1.03
Copy Uint8Array 100000 slice + set 356.96 us/op 392.62 us/op 0.91
Copy Uint8Array 100000 subarray + set 165.29 us/op 299.84 us/op 0.55
Copy Uint8Array 100000 slice arrayBuffer 163.76 us/op 368.89 us/op 0.44
Uint64 deserialize 100000 - iterate Uint8Array 2.4274 ms/op 2.6314 ms/op 0.92
Uint64 deserialize 100000 - by Uint32A 2.2175 ms/op 2.4861 ms/op 0.89
Uint64 deserialize 100000 - by DataView.getUint32 x2 2.1750 ms/op 2.5506 ms/op 0.85
Uint64 deserialize 100000 - by DataView.getBigUint64 6.9096 ms/op 7.9087 ms/op 0.87
Uint64 deserialize 100000 - by byte 69.157 ms/op 82.760 ms/op 0.84

by benchmarkbot/action

@nflaig nflaig force-pushed the nflaig/support-full-uint64-range branch 3 times, most recently from 1ad8f58 to a788db9 Compare July 7, 2023 19:56
@nflaig nflaig force-pushed the nflaig/support-full-uint64-range branch from a788db9 to f8fe947 Compare July 7, 2023 20:00
Copy link
Member

@wemeetagain wemeetagain left a comment

Choose a reason for hiding this comment

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

LGTM, this is the same approach we use to pass the ssz_static spec tests

@wemeetagain wemeetagain merged commit 2929e8b into master Jul 7, 2023
7 checks passed
@wemeetagain wemeetagain deleted the nflaig/support-full-uint64-range branch July 7, 2023 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support full Uint64 in simpleserialize.com
2 participants