ChainSafe / ssz

Typescript implementation of Simple Serialize (SSZ)
https://simpleserialize.com/
Other
44 stars 17 forks source link

feat: publish more methods #334

Closed twoeths closed 10 months ago

twoeths commented 10 months ago

Motivation

Description

Publish the above methods in ssz

github-actions[bot] commented 10 months ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: 73376b412ab95bdda834e4f4244f9ed573e4bf18 | Previous: 0d60dd0f944837f148e44869916e222d8265a3c5 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 72.799 ms/op | 58.854 ms/op | 1.24 | | digest64 50023 times | 80.405 ms/op | 60.735 ms/op | 1.32 | | digest 50023 times | 79.167 ms/op | 60.607 ms/op | 1.31 | | input length 32 | 1.8510 us/op | 1.4560 us/op | 1.27 | | input length 64 | 2.1480 us/op | 1.6070 us/op | 1.34 | | input length 128 | 3.6170 us/op | 2.7690 us/op | 1.31 | | input length 256 | 5.1730 us/op | 4.1530 us/op | 1.25 | | input length 512 | 8.8900 us/op | 6.7790 us/op | 1.31 | | input length 1024 | 17.148 us/op | 13.566 us/op | 1.26 | | digest 1000000 times | 1.3254 s/op | 1.0475 s/op | 1.27 | | hashObjectToByteArray 50023 times | 2.8133 ms/op | 2.7317 ms/op | 1.03 | | byteArrayToHashObject 50023 times | 3.3445 ms/op | 2.7794 ms/op | 1.20 | | getGindicesAtDepth | 7.5530 us/op | 6.3800 us/op | 1.18 | | iterateAtDepth | 15.108 us/op | 12.924 us/op | 1.17 | | getGindexBits | 766.00 ns/op | 578.00 ns/op | 1.33 | | gindexIterator | 1.5400 us/op | 1.2620 us/op | 1.22 | | hash 2 Uint8Array 2250026 times - as-sha256 | 3.6389 s/op | 2.7744 s/op | 1.31 | | hashTwoObjects 2250026 times - as-sha256 | 3.4588 s/op | 2.6330 s/op | 1.31 | | hash 2 Uint8Array 2250026 times - noble | 9.9087 s/op | 7.3802 s/op | 1.34 | | hashTwoObjects 2250026 times - noble | 13.280 s/op | 10.990 s/op | 1.21 | | getNodeH() x7812.5 avg hindex | 31.362 us/op | 25.865 us/op | 1.21 | | getNodeH() x7812.5 index 0 | 9.0470 us/op | 10.967 us/op | 0.82 | | getNodeH() x7812.5 index 7 | 8.7890 us/op | 10.916 us/op | 0.81 | | getNodeH() x7812.5 index 7 with key array | 8.7390 us/op | 10.916 us/op | 0.80 | | new LeafNode() x7812.5 | 382.16 us/op | 205.76 us/op | 1.86 | | multiproof - depth 15, 1 requested leaves | 18.102 us/op | 14.062 us/op | 1.29 | | tree offset multiproof - depth 15, 1 requested leaves | 40.453 us/op | 30.311 us/op | 1.33 | | compact multiproof - depth 15, 1 requested leaves | 11.661 us/op | 8.9890 us/op | 1.30 | | multiproof - depth 15, 2 requested leaves | 26.328 us/op | 20.701 us/op | 1.27 | | tree offset multiproof - depth 15, 2 requested leaves | 45.100 us/op | 36.363 us/op | 1.24 | | compact multiproof - depth 15, 2 requested leaves | 6.6420 us/op | 5.0130 us/op | 1.32 | | multiproof - depth 15, 3 requested leaves | 33.566 us/op | 28.600 us/op | 1.17 | | tree offset multiproof - depth 15, 3 requested leaves | 65.428 us/op | 48.050 us/op | 1.36 | | compact multiproof - depth 15, 3 requested leaves | 13.227 us/op | 8.8380 us/op | 1.50 | | multiproof - depth 15, 4 requested leaves | 50.457 us/op | 38.964 us/op | 1.29 | | tree offset multiproof - depth 15, 4 requested leaves | 70.350 us/op | 60.504 us/op | 1.16 | | compact multiproof - depth 15, 4 requested leaves | 11.882 us/op | 9.0360 us/op | 1.31 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 3.9060 us/op | 3.5030 us/op | 1.12 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 5.1490 us/op | 3.6960 us/op | 1.39 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 4.6530 us/op | 3.6020 us/op | 1.29 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 4.6090 us/op | 3.4880 us/op | 1.32 | | subtreeFillToContents depth 40 count 250000 | 94.194 ms/op | 75.574 ms/op | 1.25 | | setRoot - gindexBitstring | 20.560 ms/op | 18.317 ms/op | 1.12 | | setRoot - gindex | 20.415 ms/op | 18.043 ms/op | 1.13 | | getRoot - gindexBitstring | 4.4260 ms/op | 4.3758 ms/op | 1.01 | | getRoot - gindex | 5.5652 ms/op | 4.8038 ms/op | 1.16 | | getHashObject then setHashObject | 19.107 ms/op | 20.034 ms/op | 0.95 | | setNodeWithFn | 16.665 ms/op | 17.181 ms/op | 0.97 | | getNodeAtDepth depth 0 x100000 | 1.9216 ms/op | 2.3717 ms/op | 0.81 | | setNodeAtDepth depth 0 x100000 | 4.5886 ms/op | 5.5493 ms/op | 0.83 | | getNodesAtDepth depth 0 x100000 | 1.7618 ms/op | 2.0954 ms/op | 0.84 | | setNodesAtDepth depth 0 x100000 | 2.4415 ms/op | 2.7978 ms/op | 0.87 | | getNodeAtDepth depth 1 x100000 | 2.1361 ms/op | 2.5242 ms/op | 0.85 | | setNodeAtDepth depth 1 x100000 | 11.198 ms/op | 11.255 ms/op | 0.99 | | getNodesAtDepth depth 1 x100000 | 1.9759 ms/op | 2.3685 ms/op | 0.83 | | setNodesAtDepth depth 1 x100000 | 8.7382 ms/op | 9.1750 ms/op | 0.95 | | getNodeAtDepth depth 2 x100000 | 2.7422 ms/op | 3.1983 ms/op | 0.86 | | setNodeAtDepth depth 2 x100000 | 19.813 ms/op | 20.470 ms/op | 0.97 | | getNodesAtDepth depth 2 x100000 | 36.704 ms/op | 32.082 ms/op | 1.14 | | setNodesAtDepth depth 2 x100000 | 25.866 ms/op | 26.741 ms/op | 0.97 | | tree.getNodesAtDepth - gindexes | 11.016 ms/op | 11.222 ms/op | 0.98 | | tree.getNodesAtDepth - push all nodes | 2.9738 ms/op | 3.7664 ms/op | 0.79 | | tree.getNodesAtDepth - navigation | 209.16 us/op | 168.11 us/op | 1.24 | | tree.setNodesAtDepth - indexes | 743.66 us/op | 708.96 us/op | 1.05 | | set at depth 8 | 1.1570 us/op | 871.00 ns/op | 1.33 | | set at depth 16 | 1.3750 us/op | 1.1570 us/op | 1.19 | | set at depth 32 | 2.2990 us/op | 1.8150 us/op | 1.27 | | iterateNodesAtDepth 8 256 | 28.543 us/op | 25.954 us/op | 1.10 | | getNodesAtDepth 8 256 | 6.0530 us/op | 6.7290 us/op | 0.90 | | iterateNodesAtDepth 16 65536 | 7.7908 ms/op | 7.3223 ms/op | 1.06 | | getNodesAtDepth 16 65536 | 2.4325 ms/op | 3.5054 ms/op | 0.69 | | iterateNodesAtDepth 32 250000 | 28.873 ms/op | 29.904 ms/op | 0.97 | | getNodesAtDepth 32 250000 | 7.6365 ms/op | 8.2248 ms/op | 0.93 | | iterateNodesAtDepth 40 250000 | 29.572 ms/op | 26.374 ms/op | 1.12 | | getNodesAtDepth 40 250000 | 7.3744 ms/op | 7.7910 ms/op | 0.95 | | 250k validators | 14.304 s/op | 11.935 s/op | 1.20 | | bitlist bytes to struct (120,90) | 1.2020 us/op | 866.00 ns/op | 1.39 | | bitlist bytes to tree (120,90) | 4.1160 us/op | 4.0240 us/op | 1.02 | | bitlist bytes to struct (2048,2048) | 2.0980 us/op | 1.9140 us/op | 1.10 | | bitlist bytes to tree (2048,2048) | 7.4320 us/op | 6.4460 us/op | 1.15 | | ByteListType - deserialize | 19.097 ms/op | 18.435 ms/op | 1.04 | | BasicListType - deserialize | 14.701 ms/op | 14.362 ms/op | 1.02 | | ByteListType - serialize | 19.631 ms/op | 17.715 ms/op | 1.11 | | BasicListType - serialize | 21.391 ms/op | 20.932 ms/op | 1.02 | | BasicListType - tree_convertToStruct | 36.288 ms/op | 32.652 ms/op | 1.11 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 7.8418 ms/op | 6.2392 ms/op | 1.26 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 6.6950 ms/op | 6.7988 ms/op | 0.98 | | Array.push len 300000 empty Array - number | 11.613 ms/op | 8.6118 ms/op | 1.35 | | Array.set len 300000 from new Array - number | 2.7260 ms/op | 2.6655 ms/op | 1.02 | | Array.set len 300000 - number | 9.9032 ms/op | 8.2857 ms/op | 1.20 | | Uint8Array.set len 300000 | 360.92 us/op | 266.81 us/op | 1.35 | | Uint32Array.set len 300000 | 518.65 us/op | 426.34 us/op | 1.22 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 101.96 ms/op | 36.989 ms/op | 2.76 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 22.165 ms/op | 13.805 ms/op | 1.61 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 731.14 ms/op | 379.60 ms/op | 1.93 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 636.47 ms/op | 443.77 ms/op | 1.43 | | List(Container) len 300000 ViewDU.get(i) | 16.414 ms/op | 11.832 ms/op | 1.39 | | List(Container) len 300000 ViewDU.getReadonly(i) | 15.040 ms/op | 11.363 ms/op | 1.32 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 78.046 ms/op | 55.677 ms/op | 1.40 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 10.628 ms/op | 8.4361 ms/op | 1.26 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 13.134 ms/op | 10.485 ms/op | 1.25 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 12.972 ms/op | 9.9499 ms/op | 1.30 | | Array.push len 300000 empty Array - object | 10.561 ms/op | 8.4152 ms/op | 1.26 | | Array.set len 300000 from new Array - object | 3.7094 ms/op | 2.8028 ms/op | 1.32 | | Array.set len 300000 - object | 11.875 ms/op | 8.7698 ms/op | 1.35 | | cachePermanentRootStruct no cache | 17.051 us/op | 11.941 us/op | 1.43 | | cachePermanentRootStruct with cache | 390.00 ns/op | 302.00 ns/op | 1.29 | | epochParticipation len 250000 rws 7813 | 4.5559 ms/op | 3.3378 ms/op | 1.36 | | deserialize Attestation - tree | 6.2200 us/op | 4.2200 us/op | 1.47 | | deserialize Attestation - struct | 4.1050 us/op | 2.9620 us/op | 1.39 | | deserialize SignedAggregateAndProof - tree | 8.2770 us/op | 5.4170 us/op | 1.53 | | deserialize SignedAggregateAndProof - struct | 6.9660 us/op | 4.7420 us/op | 1.47 | | deserialize SyncCommitteeMessage - tree | 2.0140 us/op | 1.4820 us/op | 1.36 | | deserialize SyncCommitteeMessage - struct | 2.4530 us/op | 1.8550 us/op | 1.32 | | deserialize SignedContributionAndProof - tree | 3.9840 us/op | 2.7920 us/op | 1.43 | | deserialize SignedContributionAndProof - struct | 5.1740 us/op | 4.1220 us/op | 1.26 | | deserialize SignedBeaconBlock - tree | 487.56 us/op | 325.05 us/op | 1.50 | | deserialize SignedBeaconBlock - struct | 285.00 us/op | 215.55 us/op | 1.32 | | BeaconState vc 300000 - deserialize tree | 1.3107 s/op | 1.0236 s/op | 1.28 | | BeaconState vc 300000 - serialize tree | 377.40 ms/op | 310.79 ms/op | 1.21 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 1.4060 us/op | 1.2780 us/op | 1.10 | | BeaconState.historicalRoots vc 300000 - serialize tree | 1.7060 us/op | 1.1770 us/op | 1.45 | | BeaconState.validators vc 300000 - deserialize tree | 1.2268 s/op | 982.66 ms/op | 1.25 | | BeaconState.validators vc 300000 - serialize tree | 310.81 ms/op | 274.16 ms/op | 1.13 | | BeaconState.balances vc 300000 - deserialize tree | 49.823 ms/op | 37.449 ms/op | 1.33 | | BeaconState.balances vc 300000 - serialize tree | 5.8594 ms/op | 6.5275 ms/op | 0.90 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 1.0674 ms/op | 812.80 us/op | 1.31 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 486.81 us/op | 487.92 us/op | 1.00 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 1.0007 ms/op | 776.23 us/op | 1.29 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 475.51 us/op | 480.53 us/op | 0.99 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 53.376 ms/op | 38.746 ms/op | 1.38 | | BeaconState.inactivityScores vc 300000 - serialize tree | 6.7905 ms/op | 6.1441 ms/op | 1.11 | | hashTreeRoot Attestation - struct | 61.119 us/op | 38.403 us/op | 1.59 | | hashTreeRoot Attestation - tree | 31.493 us/op | 25.506 us/op | 1.23 | | hashTreeRoot SignedAggregateAndProof - struct | 76.325 us/op | 62.022 us/op | 1.23 | | hashTreeRoot SignedAggregateAndProof - tree | 53.523 us/op | 34.437 us/op | 1.55 | | hashTreeRoot SyncCommitteeMessage - struct | 20.015 us/op | 12.877 us/op | 1.55 | | hashTreeRoot SyncCommitteeMessage - tree | 12.138 us/op | 7.6110 us/op | 1.59 | | hashTreeRoot SignedContributionAndProof - struct | 51.472 us/op | 36.187 us/op | 1.42 | | hashTreeRoot SignedContributionAndProof - tree | 29.587 us/op | 24.838 us/op | 1.19 | | hashTreeRoot SignedBeaconBlock - struct | 4.2978 ms/op | 3.0321 ms/op | 1.42 | | hashTreeRoot SignedBeaconBlock - tree | 2.7090 ms/op | 2.0427 ms/op | 1.33 | | hashTreeRoot Validator - struct | 23.293 us/op | 17.489 us/op | 1.33 | | hashTreeRoot Validator - tree | 18.874 us/op | 14.337 us/op | 1.32 | | BeaconState vc 300000 - hashTreeRoot tree | 6.0088 s/op | 4.5628 s/op | 1.32 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 2.3190 us/op | 1.7590 us/op | 1.32 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 5.9386 s/op | 4.3048 s/op | 1.38 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 134.26 ms/op | 111.27 ms/op | 1.21 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 14.361 ms/op | 11.129 ms/op | 1.29 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 13.994 ms/op | 11.122 ms/op | 1.26 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 130.54 ms/op | 111.11 ms/op | 1.17 | | hash64 x18 | 31.081 us/op | 24.860 us/op | 1.25 | | hashTwoObjects x18 | 29.182 us/op | 22.064 us/op | 1.32 | | hash64 x1740 | 3.1015 ms/op | 2.3176 ms/op | 1.34 | | hashTwoObjects x1740 | 2.7703 ms/op | 2.0948 ms/op | 1.32 | | hash64 x2700000 | 4.7361 s/op | 3.6102 s/op | 1.31 | | hashTwoObjects x2700000 | 4.2221 s/op | 3.2600 s/op | 1.30 | | get_exitEpoch - ContainerType | 599.00 ns/op | 485.00 ns/op | 1.24 | | get_exitEpoch - ContainerNodeStructType | 473.00 ns/op | 401.00 ns/op | 1.18 | | set_exitEpoch - ContainerType | 513.00 ns/op | 329.00 ns/op | 1.56 | | set_exitEpoch - ContainerNodeStructType | 485.00 ns/op | 302.00 ns/op | 1.61 | | get_pubkey - ContainerType | 1.9860 us/op | 1.5970 us/op | 1.24 | | get_pubkey - ContainerNodeStructType | 355.00 ns/op | 301.00 ns/op | 1.18 | | hashTreeRoot - ContainerType | 585.00 ns/op | 514.00 ns/op | 1.14 | | hashTreeRoot - ContainerNodeStructType | 693.00 ns/op | 567.00 ns/op | 1.22 | | createProof - ContainerType | 7.9540 us/op | 6.5370 us/op | 1.22 | | createProof - ContainerNodeStructType | 45.709 us/op | 34.813 us/op | 1.31 | | serialize - ContainerType | 3.4530 us/op | 2.8360 us/op | 1.22 | | serialize - ContainerNodeStructType | 2.8300 us/op | 2.2870 us/op | 1.24 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 6.8070 us/op | 5.3090 us/op | 1.28 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 20.991 us/op | 15.021 us/op | 1.40 | | Array - for of | 31.109 us/op | 18.121 us/op | 1.72 | | Array - for(;;) | 29.044 us/op | 16.614 us/op | 1.75 | | basicListValue.readonlyValuesArray() | 6.0396 ms/op | 5.5566 ms/op | 1.09 | | basicListValue.readonlyValuesArray() + loop all | 6.1384 ms/op | 5.7519 ms/op | 1.07 | | compositeListValue.readonlyValuesArray() | 54.607 ms/op | 39.266 ms/op | 1.39 | | compositeListValue.readonlyValuesArray() + loop all | 40.715 ms/op | 37.952 ms/op | 1.07 | | Number64UintType - get balances list | 7.6262 ms/op | 6.3842 ms/op | 1.19 | | Number64UintType - set balances list | 17.791 ms/op | 15.014 ms/op | 1.18 | | Number64UintType - get and increase 10 then set | 79.407 ms/op | 57.853 ms/op | 1.37 | | Number64UintType - increase 10 using applyDelta | 31.196 ms/op | 25.661 ms/op | 1.22 | | Number64UintType - increase 10 using applyDeltaInBatch | 30.709 ms/op | 26.017 ms/op | 1.18 | | tree_newTreeFromUint64Deltas | 38.147 ms/op | 26.744 ms/op | 1.43 | | unsafeUint8ArrayToTree | 56.280 ms/op | 52.044 ms/op | 1.08 | | bitLength(50) | 359.00 ns/op | 313.00 ns/op | 1.15 | | bitLengthStr(50) | 426.00 ns/op | 372.00 ns/op | 1.15 | | bitLength(8000) | 361.00 ns/op | 304.00 ns/op | 1.19 | | bitLengthStr(8000) | 557.00 ns/op | 502.00 ns/op | 1.11 | | bitLength(250000) | 360.00 ns/op | 302.00 ns/op | 1.19 | | bitLengthStr(250000) | 662.00 ns/op | 597.00 ns/op | 1.11 | | floor - Math.floor (53) | 0.70884 ns/op | 0.66978 ns/op | 1.06 | | floor - << 0 (53) | 0.70854 ns/op | 0.66980 ns/op | 1.06 | | floor - Math.floor (512) | 0.70658 ns/op | 0.66982 ns/op | 1.05 | | floor - << 0 (512) | 0.71136 ns/op | 0.66994 ns/op | 1.06 | | fnIf(0) | 2.1929 ns/op | 3.0126 ns/op | 0.73 | | fnSwitch(0) | 3.3197 ns/op | 5.0197 ns/op | 0.66 | | fnObj(0) | 0.69194 ns/op | 0.67002 ns/op | 1.03 | | fnArr(0) | 0.71276 ns/op | 0.66969 ns/op | 1.06 | | fnIf(4) | 3.1498 ns/op | 4.3508 ns/op | 0.72 | | fnSwitch(4) | 3.3519 ns/op | 5.0206 ns/op | 0.67 | | fnObj(4) | 0.66899 ns/op | 0.66989 ns/op | 1.00 | | fnArr(4) | 0.71511 ns/op | 0.66979 ns/op | 1.07 | | fnIf(9) | 4.3347 ns/op | 6.6958 ns/op | 0.65 | | fnSwitch(9) | 3.1573 ns/op | 5.0227 ns/op | 0.63 | | fnObj(9) | 0.67829 ns/op | 0.66979 ns/op | 1.01 | | fnArr(9) | 0.65768 ns/op | 0.66976 ns/op | 0.98 | | Container {a,b,vec} - as struct x100000 | 70.246 us/op | 67.358 us/op | 1.04 | | Container {a,b,vec} - as tree x100000 | 665.42 us/op | 837.04 us/op | 0.79 | | Container {a,vec,b} - as struct x100000 | 111.65 us/op | 100.81 us/op | 1.11 | | Container {a,vec,b} - as tree x100000 | 760.12 us/op | 903.91 us/op | 0.84 | | get 2 props x1000000 - rawObject | 390.32 us/op | 335.29 us/op | 1.16 | | get 2 props x1000000 - proxy | 122.91 ms/op | 144.70 ms/op | 0.85 | | get 2 props x1000000 - customObj | 386.59 us/op | 335.15 us/op | 1.15 | | Simple object binary -> struct | 1.2290 us/op | 863.00 ns/op | 1.42 | | Simple object binary -> tree_backed | 3.2820 us/op | 2.3990 us/op | 1.37 | | Simple object struct -> tree_backed | 4.6450 us/op | 3.1160 us/op | 1.49 | | Simple object tree_backed -> struct | 3.7020 us/op | 2.6320 us/op | 1.41 | | Simple object struct -> binary | 1.7850 us/op | 1.4040 us/op | 1.27 | | Simple object tree_backed -> binary | 3.1860 us/op | 2.4000 us/op | 1.33 | | aggregationBits binary -> struct | 964.00 ns/op | 760.00 ns/op | 1.27 | | aggregationBits binary -> tree_backed | 4.0420 us/op | 3.1560 us/op | 1.28 | | aggregationBits struct -> tree_backed | 4.8260 us/op | 4.0950 us/op | 1.18 | | aggregationBits tree_backed -> struct | 2.0080 us/op | 1.6950 us/op | 1.18 | | aggregationBits struct -> binary | 1.3540 us/op | 1.2260 us/op | 1.10 | | aggregationBits tree_backed -> binary | 1.7540 us/op | 1.4960 us/op | 1.17 | | List(uint8) 100000 binary -> struct | 1.8389 ms/op | 2.0855 ms/op | 0.88 | | List(uint8) 100000 binary -> tree_backed | 235.79 us/op | 165.94 us/op | 1.42 | | List(uint8) 100000 struct -> tree_backed | 2.2423 ms/op | 2.5075 ms/op | 0.89 | | List(uint8) 100000 tree_backed -> struct | 1.4995 ms/op | 1.6030 ms/op | 0.94 | | List(uint8) 100000 struct -> binary | 2.0154 ms/op | 2.3056 ms/op | 0.87 | | List(uint8) 100000 tree_backed -> binary | 163.84 us/op | 148.36 us/op | 1.10 | | List(uint64Number) 100000 binary -> struct | 2.0701 ms/op | 1.9179 ms/op | 1.08 | | List(uint64Number) 100000 binary -> tree_backed | 6.7633 ms/op | 5.6722 ms/op | 1.19 | | List(uint64Number) 100000 struct -> tree_backed | 9.5577 ms/op | 8.7163 ms/op | 1.10 | | List(uint64Number) 100000 tree_backed -> struct | 3.7031 ms/op | 3.3398 ms/op | 1.11 | | List(uint64Number) 100000 struct -> binary | 2.6220 ms/op | 2.6761 ms/op | 0.98 | | List(uint64Number) 100000 tree_backed -> binary | 1.7173 ms/op | 1.5922 ms/op | 1.08 | | List(Uint64Bigint) 100000 binary -> struct | 6.6613 ms/op | 5.4418 ms/op | 1.22 | | List(Uint64Bigint) 100000 binary -> tree_backed | 6.9315 ms/op | 5.6915 ms/op | 1.22 | | List(Uint64Bigint) 100000 struct -> tree_backed | 10.871 ms/op | 8.1273 ms/op | 1.34 | | List(Uint64Bigint) 100000 tree_backed -> struct | 7.9529 ms/op | 7.2772 ms/op | 1.09 | | List(Uint64Bigint) 100000 struct -> binary | 3.4754 ms/op | 3.3595 ms/op | 1.03 | | List(Uint64Bigint) 100000 tree_backed -> binary | 1.4803 ms/op | 1.5219 ms/op | 0.97 | | Vector(Root) 100000 binary -> struct | 70.399 ms/op | 49.423 ms/op | 1.42 | | Vector(Root) 100000 binary -> tree_backed | 72.055 ms/op | 57.417 ms/op | 1.25 | | Vector(Root) 100000 struct -> tree_backed | 80.360 ms/op | 66.494 ms/op | 1.21 | | Vector(Root) 100000 tree_backed -> struct | 91.393 ms/op | 74.389 ms/op | 1.23 | | Vector(Root) 100000 struct -> binary | 3.7219 ms/op | 3.5430 ms/op | 1.05 | | Vector(Root) 100000 tree_backed -> binary | 14.479 ms/op | 14.132 ms/op | 1.02 | | List(Validator) 100000 binary -> struct | 229.27 ms/op | 192.08 ms/op | 1.19 | | List(Validator) 100000 binary -> tree_backed | 649.14 ms/op | 484.24 ms/op | 1.34 | | List(Validator) 100000 struct -> tree_backed | 694.14 ms/op | 551.04 ms/op | 1.26 | | List(Validator) 100000 tree_backed -> struct | 389.45 ms/op | 304.94 ms/op | 1.28 | | List(Validator) 100000 struct -> binary | 58.596 ms/op | 51.056 ms/op | 1.15 | | List(Validator) 100000 tree_backed -> binary | 173.72 ms/op | 134.94 ms/op | 1.29 | | List(Validator-NS) 100000 binary -> struct | 259.69 ms/op | 203.49 ms/op | 1.28 | | List(Validator-NS) 100000 binary -> tree_backed | 333.38 ms/op | 273.58 ms/op | 1.22 | | List(Validator-NS) 100000 struct -> tree_backed | 421.00 ms/op | 341.52 ms/op | 1.23 | | List(Validator-NS) 100000 tree_backed -> struct | 350.68 ms/op | 284.04 ms/op | 1.23 | | List(Validator-NS) 100000 struct -> binary | 55.798 ms/op | 51.636 ms/op | 1.08 | | List(Validator-NS) 100000 tree_backed -> binary | 67.645 ms/op | 57.841 ms/op | 1.17 | | get epochStatuses - MutableVector | 160.14 us/op | 140.74 us/op | 1.14 | | get epochStatuses - ViewDU | 285.74 us/op | 293.32 us/op | 0.97 | | set epochStatuses - ListTreeView | 2.5680 ms/op | 2.1473 ms/op | 1.20 | | set epochStatuses - ListTreeView - set() | 653.14 us/op | 632.31 us/op | 1.03 | | set epochStatuses - ListTreeView - commit() | 683.15 us/op | 647.80 us/op | 1.05 | | bitstring | 956.21 ns/op | 800.75 ns/op | 1.19 | | bit mask | 16.626 ns/op | 12.899 ns/op | 1.29 | | struct - increase slot to 1000000 | 3.0907 ms/op | 2.1855 ms/op | 1.41 | | UintNumberType - increase slot to 1000000 | 53.753 ms/op | 48.785 ms/op | 1.10 | | UintBigintType - increase slot to 1000000 | 738.59 ms/op | 643.40 ms/op | 1.15 | | UintBigint8 x 100000 tree_deserialize | 8.1554 ms/op | 6.8770 ms/op | 1.19 | | UintBigint8 x 100000 tree_serialize | 2.3804 ms/op | 2.2653 ms/op | 1.05 | | UintBigint16 x 100000 tree_deserialize | 6.7904 ms/op | 6.2761 ms/op | 1.08 | | UintBigint16 x 100000 tree_serialize | 2.1675 ms/op | 2.2444 ms/op | 0.97 | | UintBigint32 x 100000 tree_deserialize | 8.5532 ms/op | 8.0848 ms/op | 1.06 | | UintBigint32 x 100000 tree_serialize | 2.1391 ms/op | 2.1436 ms/op | 1.00 | | UintBigint64 x 100000 tree_deserialize | 9.7837 ms/op | 8.5868 ms/op | 1.14 | | UintBigint64 x 100000 tree_serialize | 2.9528 ms/op | 2.9538 ms/op | 1.00 | | UintBigint8 x 100000 value_deserialize | 723.01 us/op | 870.90 us/op | 0.83 | | UintBigint8 x 100000 value_serialize | 1.5137 ms/op | 1.3197 ms/op | 1.15 | | UintBigint16 x 100000 value_deserialize | 723.22 us/op | 932.61 us/op | 0.78 | | UintBigint16 x 100000 value_serialize | 1.5516 ms/op | 1.3492 ms/op | 1.15 | | UintBigint32 x 100000 value_deserialize | 701.94 us/op | 837.02 us/op | 0.84 | | UintBigint32 x 100000 value_serialize | 1.4871 ms/op | 1.3810 ms/op | 1.08 | | UintBigint64 x 100000 value_deserialize | 804.24 us/op | 956.74 us/op | 0.84 | | UintBigint64 x 100000 value_serialize | 1.6888 ms/op | 1.7132 ms/op | 0.99 | | UintBigint8 x 100000 deserialize | 7.9109 ms/op | 6.9238 ms/op | 1.14 | | UintBigint8 x 100000 serialize | 2.4451 ms/op | 2.6356 ms/op | 0.93 | | UintBigint16 x 100000 deserialize | 8.6081 ms/op | 6.8312 ms/op | 1.26 | | UintBigint16 x 100000 serialize | 2.4305 ms/op | 2.6200 ms/op | 0.93 | | UintBigint32 x 100000 deserialize | 9.6608 ms/op | 8.1666 ms/op | 1.18 | | UintBigint32 x 100000 serialize | 4.8932 ms/op | 4.5918 ms/op | 1.07 | | UintBigint64 x 100000 deserialize | 6.4532 ms/op | 5.6472 ms/op | 1.14 | | UintBigint64 x 100000 serialize | 2.5127 ms/op | 2.7005 ms/op | 0.93 | | UintBigint128 x 100000 deserialize | 10.044 ms/op | 8.7612 ms/op | 1.15 | | UintBigint128 x 100000 serialize | 33.808 ms/op | 29.162 ms/op | 1.16 | | UintBigint256 x 100000 deserialize | 18.605 ms/op | 16.673 ms/op | 1.12 | | UintBigint256 x 100000 serialize | 105.28 ms/op | 85.641 ms/op | 1.23 | | Slice from Uint8Array x25000 | 2.1552 ms/op | 1.7312 ms/op | 1.24 | | Slice from ArrayBuffer x25000 | 32.664 ms/op | 29.661 ms/op | 1.10 | | Slice from ArrayBuffer x25000 + new Uint8Array | 38.287 ms/op | 33.770 ms/op | 1.13 | | Copy Uint8Array 100000 iterate | 1.1624 ms/op | 1.7642 ms/op | 0.66 | | Copy Uint8Array 100000 slice | 166.96 us/op | 337.72 us/op | 0.49 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 167.64 us/op | 325.88 us/op | 0.51 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 186.99 us/op | 323.83 us/op | 0.58 | | Copy Uint8Array 100000 slice + set | 365.61 us/op | 575.21 us/op | 0.64 | | Copy Uint8Array 100000 subarray + set | 207.31 us/op | 335.35 us/op | 0.62 | | Copy Uint8Array 100000 slice arrayBuffer | 168.04 us/op | 360.84 us/op | 0.47 | | Uint64 deserialize 100000 - iterate Uint8Array | 2.7781 ms/op | 2.3371 ms/op | 1.19 | | Uint64 deserialize 100000 - by Uint32A | 2.6255 ms/op | 2.1325 ms/op | 1.23 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 2.6155 ms/op | 2.1990 ms/op | 1.19 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 8.2651 ms/op | 7.1209 ms/op | 1.16 | | Uint64 deserialize 100000 - by byte | 69.985 ms/op | 69.241 ms/op | 1.01 |

by benchmarkbot/action