ChainSafe / ssz

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

chore: release master #340

Closed wemeetagain closed 5 months ago

wemeetagain commented 5 months ago

:robot: I have created a release beep boop

ssz: 0.14.1 ## [0.14.1](https://github.com/ChainSafe/ssz/compare/ssz-v0.14.0...ssz-v0.14.1) (2024-02-10) ### Bug Fixes * relax BitArray#intersectValues types ([#339](https://github.com/ChainSafe/ssz/issues/339)) ([9ba2456](https://github.com/ChainSafe/ssz/commit/9ba2456eff8b224248826be482a776f7c721aece))

This PR was generated with Release Please. See documentation.

github-actions[bot] commented 5 months ago

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 9883d6b77a3c8571dcd854835eebb19410e60063 Previous: 93ab30e4fc2928fb808b4c76ee015631b8770126 Ratio
getNodeH() x7812.5 avg hindex 14.591 us/op 1.2769 ms/op 0.01
new LeafNode() x7812.5 111.81 us/op 366.90 us/op 0.30
Container({a: uint8, b: uint8}) getViewDU x300000 19.782 ms/op 99.369 ms/op 0.20
BeaconState vc 300000 - serialize tree 112.54 ms/op 367.30 ms/op 0.31
struct - increase slot to 1000000 927.99 us/op 3.1197 ms/op 0.30
Copy Uint8Array 100000 Uint8Array.prototype.slice.call 87.217 us/op 322.71 us/op 0.27
Copy Buffer 100000 Uint8Array.prototype.slice.call 87.617 us/op 420.80 us/op 0.21
Copy Uint8Array 100000 slice + set 160.56 us/op 762.08 us/op 0.21
Copy Uint8Array 100000 subarray + set 86.770 us/op 415.04 us/op 0.21
Copy Uint8Array 100000 slice arrayBuffer 87.820 us/op 437.70 us/op 0.20
Full benchmark results | Benchmark suite | Current: 9883d6b77a3c8571dcd854835eebb19410e60063 | Previous: 93ab30e4fc2928fb808b4c76ee015631b8770126 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 48.379 ms/op | 77.736 ms/op | 0.62 | | digest64 50023 times | 49.857 ms/op | 80.273 ms/op | 0.62 | | digest 50023 times | 49.658 ms/op | 80.084 ms/op | 0.62 | | input length 32 | 1.1950 us/op | 1.8860 us/op | 0.63 | | input length 64 | 1.3510 us/op | 2.0890 us/op | 0.65 | | input length 128 | 2.2600 us/op | 3.5690 us/op | 0.63 | | input length 256 | 3.3550 us/op | 5.3480 us/op | 0.63 | | input length 512 | 5.4950 us/op | 8.7080 us/op | 0.63 | | input length 1024 | 10.829 us/op | 17.761 us/op | 0.61 | | digest 1000000 times | 798.38 ms/op | 1.3646 s/op | 0.59 | | hashObjectToByteArray 50023 times | 1.4293 ms/op | 2.7661 ms/op | 0.52 | | byteArrayToHashObject 50023 times | 1.7912 ms/op | 3.6089 ms/op | 0.50 | | getGindicesAtDepth | 4.4100 us/op | 7.1790 us/op | 0.61 | | iterateAtDepth | 9.5540 us/op | 15.508 us/op | 0.62 | | getGindexBits | 477.00 ns/op | 690.00 ns/op | 0.69 | | gindexIterator | 1.1000 us/op | 1.4860 us/op | 0.74 | | hash 2 Uint8Array 2250026 times - as-sha256 | 2.2641 s/op | 3.5565 s/op | 0.64 | | hashTwoObjects 2250026 times - as-sha256 | 2.1450 s/op | 3.3333 s/op | 0.64 | | hash 2 Uint8Array 2250026 times - noble | 4.8721 s/op | 9.8489 s/op | 0.49 | | hashTwoObjects 2250026 times - noble | 6.8356 s/op | 12.543 s/op | 0.54 | | getNodeH() x7812.5 avg hindex | 14.591 us/op | 1.2769 ms/op | 0.01 | | getNodeH() x7812.5 index 0 | 5.1020 us/op | 9.1970 us/op | 0.55 | | getNodeH() x7812.5 index 7 | 5.0600 us/op | 8.1920 us/op | 0.62 | | getNodeH() x7812.5 index 7 with key array | 5.1230 us/op | 8.1540 us/op | 0.63 | | new LeafNode() x7812.5 | 111.81 us/op | 366.90 us/op | 0.30 | | multiproof - depth 15, 1 requested leaves | 9.2990 us/op | 17.320 us/op | 0.54 | | tree offset multiproof - depth 15, 1 requested leaves | 20.750 us/op | 38.051 us/op | 0.55 | | compact multiproof - depth 15, 1 requested leaves | 5.4500 us/op | 10.558 us/op | 0.52 | | multiproof - depth 15, 2 requested leaves | 12.868 us/op | 23.424 us/op | 0.55 | | tree offset multiproof - depth 15, 2 requested leaves | 23.368 us/op | 41.192 us/op | 0.57 | | compact multiproof - depth 15, 2 requested leaves | 3.3260 us/op | 6.4190 us/op | 0.52 | | multiproof - depth 15, 3 requested leaves | 18.088 us/op | 31.687 us/op | 0.57 | | tree offset multiproof - depth 15, 3 requested leaves | 30.613 us/op | 57.318 us/op | 0.53 | | compact multiproof - depth 15, 3 requested leaves | 4.4730 us/op | 10.429 us/op | 0.43 | | multiproof - depth 15, 4 requested leaves | 23.758 us/op | 43.026 us/op | 0.55 | | tree offset multiproof - depth 15, 4 requested leaves | 37.856 us/op | 69.698 us/op | 0.54 | | compact multiproof - depth 15, 4 requested leaves | 5.3480 us/op | 12.176 us/op | 0.44 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 1.9980 us/op | 3.9110 us/op | 0.51 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 1.9660 us/op | 3.8410 us/op | 0.51 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 1.9530 us/op | 3.9350 us/op | 0.50 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 1.9610 us/op | 4.0590 us/op | 0.48 | | subtreeFillToContents depth 40 count 250000 | 49.075 ms/op | 107.79 ms/op | 0.46 | | setRoot - gindexBitstring | 8.6879 ms/op | 16.654 ms/op | 0.52 | | setRoot - gindex | 9.1255 ms/op | 19.115 ms/op | 0.48 | | getRoot - gindexBitstring | 2.3932 ms/op | 4.2727 ms/op | 0.56 | | getRoot - gindex | 3.1500 ms/op | 5.5907 ms/op | 0.56 | | getHashObject then setHashObject | 10.853 ms/op | 21.313 ms/op | 0.51 | | setNodeWithFn | 9.1582 ms/op | 17.625 ms/op | 0.52 | | getNodeAtDepth depth 0 x100000 | 1.1449 ms/op | 1.9777 ms/op | 0.58 | | setNodeAtDepth depth 0 x100000 | 2.6816 ms/op | 4.8319 ms/op | 0.55 | | getNodesAtDepth depth 0 x100000 | 1.0847 ms/op | 1.7399 ms/op | 0.62 | | setNodesAtDepth depth 0 x100000 | 1.5097 ms/op | 2.2933 ms/op | 0.66 | | getNodeAtDepth depth 1 x100000 | 1.2062 ms/op | 1.9680 ms/op | 0.61 | | setNodeAtDepth depth 1 x100000 | 5.6670 ms/op | 10.322 ms/op | 0.55 | | getNodesAtDepth depth 1 x100000 | 1.2071 ms/op | 1.8683 ms/op | 0.65 | | setNodesAtDepth depth 1 x100000 | 4.6297 ms/op | 8.1607 ms/op | 0.57 | | getNodeAtDepth depth 2 x100000 | 1.4837 ms/op | 2.6263 ms/op | 0.56 | | setNodeAtDepth depth 2 x100000 | 9.7729 ms/op | 19.062 ms/op | 0.51 | | getNodesAtDepth depth 2 x100000 | 21.333 ms/op | 34.638 ms/op | 0.62 | | setNodesAtDepth depth 2 x100000 | 15.917 ms/op | 27.830 ms/op | 0.57 | | tree.getNodesAtDepth - gindexes | 7.6078 ms/op | 8.4481 ms/op | 0.90 | | tree.getNodesAtDepth - push all nodes | 2.1038 ms/op | 3.0091 ms/op | 0.70 | | tree.getNodesAtDepth - navigation | 156.40 us/op | 198.33 us/op | 0.79 | | tree.setNodesAtDepth - indexes | 368.45 us/op | 612.82 us/op | 0.60 | | set at depth 8 | 509.00 ns/op | 951.00 ns/op | 0.54 | | set at depth 16 | 658.00 ns/op | 1.3380 us/op | 0.49 | | set at depth 32 | 1.0280 us/op | 2.0050 us/op | 0.51 | | iterateNodesAtDepth 8 256 | 13.660 us/op | 24.471 us/op | 0.56 | | getNodesAtDepth 8 256 | 3.3460 us/op | 5.8460 us/op | 0.57 | | iterateNodesAtDepth 16 65536 | 4.1227 ms/op | 7.5203 ms/op | 0.55 | | getNodesAtDepth 16 65536 | 1.9006 ms/op | 2.5382 ms/op | 0.75 | | iterateNodesAtDepth 32 250000 | 15.476 ms/op | 28.518 ms/op | 0.54 | | getNodesAtDepth 32 250000 | 4.5447 ms/op | 7.1179 ms/op | 0.64 | | iterateNodesAtDepth 40 250000 | 15.275 ms/op | 27.004 ms/op | 0.57 | | getNodesAtDepth 40 250000 | 4.5279 ms/op | 7.3968 ms/op | 0.61 | | 250k validators | 7.4406 s/op | 13.348 s/op | 0.56 | | bitlist bytes to struct (120,90) | 622.00 ns/op | 1.1060 us/op | 0.56 | | bitlist bytes to tree (120,90) | 2.5030 us/op | 4.2590 us/op | 0.59 | | bitlist bytes to struct (2048,2048) | 1.0680 us/op | 1.9560 us/op | 0.55 | | bitlist bytes to tree (2048,2048) | 3.8060 us/op | 7.4190 us/op | 0.51 | | ByteListType - deserialize | 8.6301 ms/op | 18.320 ms/op | 0.47 | | BasicListType - deserialize | 9.2936 ms/op | 14.349 ms/op | 0.65 | | ByteListType - serialize | 8.1160 ms/op | 17.992 ms/op | 0.45 | | BasicListType - serialize | 10.702 ms/op | 21.036 ms/op | 0.51 | | BasicListType - tree_convertToStruct | 24.148 ms/op | 39.850 ms/op | 0.61 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 4.2250 ms/op | 7.3504 ms/op | 0.57 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 4.1365 ms/op | 6.7517 ms/op | 0.61 | | Array.push len 300000 empty Array - number | 6.1803 ms/op | 10.950 ms/op | 0.56 | | Array.set len 300000 from new Array - number | 1.5548 ms/op | 2.5240 ms/op | 0.62 | | Array.set len 300000 - number | 5.1241 ms/op | 8.8973 ms/op | 0.58 | | Uint8Array.set len 300000 | 204.20 us/op | 348.57 us/op | 0.59 | | Uint32Array.set len 300000 | 272.83 us/op | 418.02 us/op | 0.65 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 19.782 ms/op | 99.369 ms/op | 0.20 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 9.2553 ms/op | 22.769 ms/op | 0.41 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 250.19 ms/op | 716.64 ms/op | 0.35 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 292.92 ms/op | 573.44 ms/op | 0.51 | | List(Container) len 300000 ViewDU.get(i) | 6.5617 ms/op | 12.899 ms/op | 0.51 | | List(Container) len 300000 ViewDU.getReadonly(i) | 7.2054 ms/op | 12.332 ms/op | 0.58 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 42.321 ms/op | 70.553 ms/op | 0.60 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 5.2996 ms/op | 9.1653 ms/op | 0.58 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 6.1150 ms/op | 10.409 ms/op | 0.59 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 5.9650 ms/op | 10.990 ms/op | 0.54 | | Array.push len 300000 empty Array - object | 6.0101 ms/op | 10.815 ms/op | 0.56 | | Array.set len 300000 from new Array - object | 1.8593 ms/op | 3.3966 ms/op | 0.55 | | Array.set len 300000 - object | 5.6726 ms/op | 9.9895 ms/op | 0.57 | | cachePermanentRootStruct no cache | 8.8830 us/op | 16.466 us/op | 0.54 | | cachePermanentRootStruct with cache | 214.00 ns/op | 371.00 ns/op | 0.58 | | epochParticipation len 250000 rws 7813 | 2.3331 ms/op | 4.3912 ms/op | 0.53 | | deserialize Attestation - tree | 2.8030 us/op | 6.3710 us/op | 0.44 | | deserialize Attestation - struct | 1.8750 us/op | 4.1660 us/op | 0.45 | | deserialize SignedAggregateAndProof - tree | 3.5000 us/op | 8.6410 us/op | 0.41 | | deserialize SignedAggregateAndProof - struct | 2.9480 us/op | 6.3330 us/op | 0.47 | | deserialize SyncCommitteeMessage - tree | 1.0830 us/op | 1.8900 us/op | 0.57 | | deserialize SyncCommitteeMessage - struct | 1.1550 us/op | 2.1860 us/op | 0.53 | | deserialize SignedContributionAndProof - tree | 1.8790 us/op | 3.8440 us/op | 0.49 | | deserialize SignedContributionAndProof - struct | 2.3430 us/op | 5.4430 us/op | 0.43 | | deserialize SignedBeaconBlock - tree | 208.40 us/op | 499.58 us/op | 0.42 | | deserialize SignedBeaconBlock - struct | 122.63 us/op | 279.05 us/op | 0.44 | | BeaconState vc 300000 - deserialize tree | 675.15 ms/op | 1.2072 s/op | 0.56 | | BeaconState vc 300000 - serialize tree | 112.54 ms/op | 367.30 ms/op | 0.31 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 831.00 ns/op | 1.1880 us/op | 0.70 | | BeaconState.historicalRoots vc 300000 - serialize tree | 798.00 ns/op | 1.5940 us/op | 0.50 | | BeaconState.validators vc 300000 - deserialize tree | 631.28 ms/op | 1.2360 s/op | 0.51 | | BeaconState.validators vc 300000 - serialize tree | 117.48 ms/op | 290.77 ms/op | 0.40 | | BeaconState.balances vc 300000 - deserialize tree | 23.880 ms/op | 49.244 ms/op | 0.48 | | BeaconState.balances vc 300000 - serialize tree | 3.1322 ms/op | 5.5780 ms/op | 0.56 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 388.99 us/op | 958.16 us/op | 0.41 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 268.79 us/op | 458.68 us/op | 0.59 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 378.92 us/op | 950.84 us/op | 0.40 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 268.59 us/op | 487.42 us/op | 0.55 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 25.151 ms/op | 49.014 ms/op | 0.51 | | BeaconState.inactivityScores vc 300000 - serialize tree | 3.2221 ms/op | 5.7566 ms/op | 0.56 | | hashTreeRoot Attestation - struct | 30.876 us/op | 58.186 us/op | 0.53 | | hashTreeRoot Attestation - tree | 18.557 us/op | 29.190 us/op | 0.64 | | hashTreeRoot SignedAggregateAndProof - struct | 41.583 us/op | 76.700 us/op | 0.54 | | hashTreeRoot SignedAggregateAndProof - tree | 28.208 us/op | 51.781 us/op | 0.54 | | hashTreeRoot SyncCommitteeMessage - struct | 9.9100 us/op | 17.794 us/op | 0.56 | | hashTreeRoot SyncCommitteeMessage - tree | 6.2070 us/op | 12.005 us/op | 0.52 | | hashTreeRoot SignedContributionAndProof - struct | 28.116 us/op | 50.868 us/op | 0.55 | | hashTreeRoot SignedContributionAndProof - tree | 20.319 us/op | 29.269 us/op | 0.69 | | hashTreeRoot SignedBeaconBlock - struct | 2.3676 ms/op | 4.4560 ms/op | 0.53 | | hashTreeRoot SignedBeaconBlock - tree | 1.6787 ms/op | 2.6544 ms/op | 0.63 | | hashTreeRoot Validator - struct | 12.502 us/op | 22.812 us/op | 0.55 | | hashTreeRoot Validator - tree | 10.886 us/op | 19.539 us/op | 0.56 | | BeaconState vc 300000 - hashTreeRoot tree | 3.6169 s/op | 5.9103 s/op | 0.61 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 1.4940 us/op | 2.3680 us/op | 0.63 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 3.4599 s/op | 5.6794 s/op | 0.61 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 88.325 ms/op | 140.91 ms/op | 0.63 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 9.0190 ms/op | 14.273 ms/op | 0.63 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 9.0107 ms/op | 14.367 ms/op | 0.63 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 83.688 ms/op | 142.50 ms/op | 0.59 | | hash64 x18 | 19.848 us/op | 31.820 us/op | 0.62 | | hashTwoObjects x18 | 17.980 us/op | 27.632 us/op | 0.65 | | hash64 x1740 | 1.8262 ms/op | 2.9347 ms/op | 0.62 | | hashTwoObjects x1740 | 1.7258 ms/op | 2.7014 ms/op | 0.64 | | hash64 x2700000 | 2.8497 s/op | 4.5627 s/op | 0.62 | | hashTwoObjects x2700000 | 2.6532 s/op | 4.1799 s/op | 0.63 | | get_exitEpoch - ContainerType | 228.00 ns/op | 567.00 ns/op | 0.40 | | get_exitEpoch - ContainerNodeStructType | 211.00 ns/op | 465.00 ns/op | 0.45 | | set_exitEpoch - ContainerType | 253.00 ns/op | 503.00 ns/op | 0.50 | | set_exitEpoch - ContainerNodeStructType | 221.00 ns/op | 353.00 ns/op | 0.63 | | get_pubkey - ContainerType | 1.0530 us/op | 1.8300 us/op | 0.58 | | get_pubkey - ContainerNodeStructType | 225.00 ns/op | 359.00 ns/op | 0.63 | | hashTreeRoot - ContainerType | 392.00 ns/op | 568.00 ns/op | 0.69 | | hashTreeRoot - ContainerNodeStructType | 437.00 ns/op | 713.00 ns/op | 0.61 | | createProof - ContainerType | 4.0320 us/op | 8.2170 us/op | 0.49 | | createProof - ContainerNodeStructType | 21.454 us/op | 44.039 us/op | 0.49 | | serialize - ContainerType | 2.0130 us/op | 3.3340 us/op | 0.60 | | serialize - ContainerNodeStructType | 1.5760 us/op | 2.7550 us/op | 0.57 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 4.0040 us/op | 6.8830 us/op | 0.58 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 11.514 us/op | 19.340 us/op | 0.60 | | Array - for of | 7.5420 us/op | 30.661 us/op | 0.25 | | Array - for(;;) | 6.8130 us/op | 26.349 us/op | 0.26 | | basicListValue.readonlyValuesArray() | 3.8698 ms/op | 5.9383 ms/op | 0.65 | | basicListValue.readonlyValuesArray() + loop all | 3.9934 ms/op | 6.1437 ms/op | 0.65 | | compositeListValue.readonlyValuesArray() | 29.285 ms/op | 48.726 ms/op | 0.60 | | compositeListValue.readonlyValuesArray() + loop all | 25.548 ms/op | 46.805 ms/op | 0.55 | | Number64UintType - get balances list | 4.1444 ms/op | 7.2311 ms/op | 0.57 | | Number64UintType - set balances list | 9.5422 ms/op | 17.542 ms/op | 0.54 | | Number64UintType - get and increase 10 then set | 38.775 ms/op | 77.909 ms/op | 0.50 | | Number64UintType - increase 10 using applyDelta | 15.506 ms/op | 30.333 ms/op | 0.51 | | Number64UintType - increase 10 using applyDeltaInBatch | 15.142 ms/op | 31.195 ms/op | 0.49 | | tree_newTreeFromUint64Deltas | 17.657 ms/op | 34.696 ms/op | 0.51 | | unsafeUint8ArrayToTree | 30.338 ms/op | 56.249 ms/op | 0.54 | | bitLength(50) | 232.00 ns/op | 362.00 ns/op | 0.64 | | bitLengthStr(50) | 234.00 ns/op | 431.00 ns/op | 0.54 | | bitLength(8000) | 220.00 ns/op | 357.00 ns/op | 0.62 | | bitLengthStr(8000) | 275.00 ns/op | 582.00 ns/op | 0.47 | | bitLength(250000) | 222.00 ns/op | 368.00 ns/op | 0.60 | | bitLengthStr(250000) | 311.00 ns/op | 685.00 ns/op | 0.45 | | floor - Math.floor (53) | 0.46447 ns/op | 0.68434 ns/op | 0.68 | | floor - << 0 (53) | 0.46565 ns/op | 0.69194 ns/op | 0.67 | | floor - Math.floor (512) | 0.46765 ns/op | 0.68089 ns/op | 0.69 | | floor - << 0 (512) | 0.46386 ns/op | 0.68873 ns/op | 0.67 | | fnIf(0) | 1.5464 ns/op | 2.1342 ns/op | 0.72 | | fnSwitch(0) | 2.4744 ns/op | 3.3480 ns/op | 0.74 | | fnObj(0) | 0.46452 ns/op | 0.67376 ns/op | 0.69 | | fnArr(0) | 0.46413 ns/op | 0.68918 ns/op | 0.67 | | fnIf(4) | 2.1655 ns/op | 3.1444 ns/op | 0.69 | | fnSwitch(4) | 2.5082 ns/op | 3.2590 ns/op | 0.77 | | fnObj(4) | 0.46527 ns/op | 0.67471 ns/op | 0.69 | | fnArr(4) | 0.46889 ns/op | 0.69428 ns/op | 0.68 | | fnIf(9) | 3.0955 ns/op | 4.3439 ns/op | 0.71 | | fnSwitch(9) | 2.4781 ns/op | 3.3944 ns/op | 0.73 | | fnObj(9) | 0.46504 ns/op | 0.68443 ns/op | 0.68 | | fnArr(9) | 0.46467 ns/op | 0.68015 ns/op | 0.68 | | Container {a,b,vec} - as struct x100000 | 46.613 us/op | 69.487 us/op | 0.67 | | Container {a,b,vec} - as tree x100000 | 371.35 us/op | 672.84 us/op | 0.55 | | Container {a,vec,b} - as struct x100000 | 77.485 us/op | 105.38 us/op | 0.74 | | Container {a,vec,b} - as tree x100000 | 402.25 us/op | 765.48 us/op | 0.53 | | get 2 props x1000000 - rawObject | 309.22 us/op | 388.45 us/op | 0.80 | | get 2 props x1000000 - proxy | 71.168 ms/op | 116.89 ms/op | 0.61 | | get 2 props x1000000 - customObj | 310.31 us/op | 390.21 us/op | 0.80 | | Simple object binary -> struct | 857.00 ns/op | 1.3020 us/op | 0.66 | | Simple object binary -> tree_backed | 2.2700 us/op | 3.2640 us/op | 0.70 | | Simple object struct -> tree_backed | 2.9270 us/op | 4.6390 us/op | 0.63 | | Simple object tree_backed -> struct | 2.4380 us/op | 3.7180 us/op | 0.66 | | Simple object struct -> binary | 1.1970 us/op | 1.8450 us/op | 0.65 | | Simple object tree_backed -> binary | 2.1710 us/op | 3.3830 us/op | 0.64 | | aggregationBits binary -> struct | 828.00 ns/op | 1.1270 us/op | 0.73 | | aggregationBits binary -> tree_backed | 2.5470 us/op | 4.2030 us/op | 0.61 | | aggregationBits struct -> tree_backed | 2.9290 us/op | 4.9730 us/op | 0.59 | | aggregationBits tree_backed -> struct | 1.2680 us/op | 1.9800 us/op | 0.64 | | aggregationBits struct -> binary | 893.00 ns/op | 1.3990 us/op | 0.64 | | aggregationBits tree_backed -> binary | 1.1000 us/op | 1.7520 us/op | 0.63 | | List(uint8) 100000 binary -> struct | 1.2678 ms/op | 1.9465 ms/op | 0.65 | | List(uint8) 100000 binary -> tree_backed | 84.547 us/op | 226.38 us/op | 0.37 | | List(uint8) 100000 struct -> tree_backed | 1.3200 ms/op | 2.2191 ms/op | 0.59 | | List(uint8) 100000 tree_backed -> struct | 951.93 us/op | 1.5113 ms/op | 0.63 | | List(uint8) 100000 struct -> binary | 1.2226 ms/op | 2.0898 ms/op | 0.59 | | List(uint8) 100000 tree_backed -> binary | 81.524 us/op | 161.39 us/op | 0.51 | | List(uint64Number) 100000 binary -> struct | 1.2039 ms/op | 2.2212 ms/op | 0.54 | | List(uint64Number) 100000 binary -> tree_backed | 3.7163 ms/op | 7.1330 ms/op | 0.52 | | List(uint64Number) 100000 struct -> tree_backed | 4.8802 ms/op | 11.459 ms/op | 0.43 | | List(uint64Number) 100000 tree_backed -> struct | 2.1149 ms/op | 3.4802 ms/op | 0.61 | | List(uint64Number) 100000 struct -> binary | 1.4408 ms/op | 2.5311 ms/op | 0.57 | | List(uint64Number) 100000 tree_backed -> binary | 822.52 us/op | 1.4266 ms/op | 0.58 | | List(Uint64Bigint) 100000 binary -> struct | 3.4584 ms/op | 6.1954 ms/op | 0.56 | | List(Uint64Bigint) 100000 binary -> tree_backed | 3.6886 ms/op | 6.9303 ms/op | 0.53 | | List(Uint64Bigint) 100000 struct -> tree_backed | 5.7840 ms/op | 10.879 ms/op | 0.53 | | List(Uint64Bigint) 100000 tree_backed -> struct | 4.4258 ms/op | 7.8438 ms/op | 0.56 | | List(Uint64Bigint) 100000 struct -> binary | 2.0160 ms/op | 3.3000 ms/op | 0.61 | | List(Uint64Bigint) 100000 tree_backed -> binary | 749.74 us/op | 1.2166 ms/op | 0.62 | | Vector(Root) 100000 binary -> struct | 35.150 ms/op | 69.217 ms/op | 0.51 | | Vector(Root) 100000 binary -> tree_backed | 37.903 ms/op | 72.949 ms/op | 0.52 | | Vector(Root) 100000 struct -> tree_backed | 37.451 ms/op | 84.458 ms/op | 0.44 | | Vector(Root) 100000 tree_backed -> struct | 43.937 ms/op | 94.108 ms/op | 0.47 | | Vector(Root) 100000 struct -> binary | 1.8398 ms/op | 3.7477 ms/op | 0.49 | | Vector(Root) 100000 tree_backed -> binary | 8.2377 ms/op | 15.241 ms/op | 0.54 | | List(Validator) 100000 binary -> struct | 127.76 ms/op | 228.16 ms/op | 0.56 | | List(Validator) 100000 binary -> tree_backed | 326.15 ms/op | 667.08 ms/op | 0.49 | | List(Validator) 100000 struct -> tree_backed | 341.39 ms/op | 701.45 ms/op | 0.49 | | List(Validator) 100000 tree_backed -> struct | 193.65 ms/op | 394.13 ms/op | 0.49 | | List(Validator) 100000 struct -> binary | 29.784 ms/op | 55.315 ms/op | 0.54 | | List(Validator) 100000 tree_backed -> binary | 94.951 ms/op | 173.48 ms/op | 0.55 | | List(Validator-NS) 100000 binary -> struct | 118.01 ms/op | 254.60 ms/op | 0.46 | | List(Validator-NS) 100000 binary -> tree_backed | 179.90 ms/op | 346.48 ms/op | 0.52 | | List(Validator-NS) 100000 struct -> tree_backed | 217.50 ms/op | 412.97 ms/op | 0.53 | | List(Validator-NS) 100000 tree_backed -> struct | 173.20 ms/op | 352.93 ms/op | 0.49 | | List(Validator-NS) 100000 struct -> binary | 30.184 ms/op | 58.219 ms/op | 0.52 | | List(Validator-NS) 100000 tree_backed -> binary | 35.961 ms/op | 67.324 ms/op | 0.53 | | get epochStatuses - MutableVector | 95.615 us/op | 194.00 us/op | 0.49 | | get epochStatuses - ViewDU | 200.51 us/op | 283.80 us/op | 0.71 | | set epochStatuses - ListTreeView | 1.5519 ms/op | 2.4204 ms/op | 0.64 | | set epochStatuses - ListTreeView - set() | 429.19 us/op | 696.01 us/op | 0.62 | | set epochStatuses - ListTreeView - commit() | 401.19 us/op | 696.92 us/op | 0.58 | | bitstring | 643.76 ns/op | 870.54 ns/op | 0.74 | | bit mask | 13.806 ns/op | 16.171 ns/op | 0.85 | | struct - increase slot to 1000000 | 927.99 us/op | 3.1197 ms/op | 0.30 | | UintNumberType - increase slot to 1000000 | 28.157 ms/op | 50.108 ms/op | 0.56 | | UintBigintType - increase slot to 1000000 | 422.11 ms/op | 742.95 ms/op | 0.57 | | UintBigint8 x 100000 tree_deserialize | 3.9206 ms/op | 7.2105 ms/op | 0.54 | | UintBigint8 x 100000 tree_serialize | 1.1852 ms/op | 2.1184 ms/op | 0.56 | | UintBigint16 x 100000 tree_deserialize | 4.4543 ms/op | 7.2165 ms/op | 0.62 | | UintBigint16 x 100000 tree_serialize | 1.1624 ms/op | 2.1317 ms/op | 0.55 | | UintBigint32 x 100000 tree_deserialize | 4.9415 ms/op | 9.3805 ms/op | 0.53 | | UintBigint32 x 100000 tree_serialize | 1.2291 ms/op | 2.2403 ms/op | 0.55 | | UintBigint64 x 100000 tree_deserialize | 5.2655 ms/op | 9.7289 ms/op | 0.54 | | UintBigint64 x 100000 tree_serialize | 1.6279 ms/op | 2.7724 ms/op | 0.59 | | UintBigint8 x 100000 value_deserialize | 433.20 us/op | 694.80 us/op | 0.62 | | UintBigint8 x 100000 value_serialize | 612.07 us/op | 1.5971 ms/op | 0.38 | | UintBigint16 x 100000 value_deserialize | 464.26 us/op | 696.49 us/op | 0.67 | | UintBigint16 x 100000 value_serialize | 646.08 us/op | 1.6112 ms/op | 0.40 | | UintBigint32 x 100000 value_deserialize | 433.07 us/op | 700.35 us/op | 0.62 | | UintBigint32 x 100000 value_serialize | 645.18 us/op | 1.6432 ms/op | 0.39 | | UintBigint64 x 100000 value_deserialize | 465.61 us/op | 765.00 us/op | 0.61 | | UintBigint64 x 100000 value_serialize | 828.04 us/op | 1.7961 ms/op | 0.46 | | UintBigint8 x 100000 deserialize | 4.8560 ms/op | 7.9877 ms/op | 0.61 | | UintBigint8 x 100000 serialize | 1.4471 ms/op | 2.4504 ms/op | 0.59 | | UintBigint16 x 100000 deserialize | 4.7237 ms/op | 8.3749 ms/op | 0.56 | | UintBigint16 x 100000 serialize | 1.5028 ms/op | 2.7444 ms/op | 0.55 | | UintBigint32 x 100000 deserialize | 5.6758 ms/op | 9.5079 ms/op | 0.60 | | UintBigint32 x 100000 serialize | 2.9073 ms/op | 4.5931 ms/op | 0.63 | | UintBigint64 x 100000 deserialize | 3.8225 ms/op | 6.2289 ms/op | 0.61 | | UintBigint64 x 100000 serialize | 1.5090 ms/op | 2.4042 ms/op | 0.63 | | UintBigint128 x 100000 deserialize | 5.9658 ms/op | 10.244 ms/op | 0.58 | | UintBigint128 x 100000 serialize | 18.007 ms/op | 34.102 ms/op | 0.53 | | UintBigint256 x 100000 deserialize | 11.490 ms/op | 18.303 ms/op | 0.63 | | UintBigint256 x 100000 serialize | 51.615 ms/op | 105.82 ms/op | 0.49 | | Slice from Uint8Array x25000 | 973.00 us/op | 1.9050 ms/op | 0.51 | | Slice from ArrayBuffer x25000 | 17.125 ms/op | 33.094 ms/op | 0.52 | | Slice from ArrayBuffer x25000 + new Uint8Array | 19.457 ms/op | 36.703 ms/op | 0.53 | | Copy Uint8Array 100000 iterate | 814.11 us/op | 1.1367 ms/op | 0.72 | | Copy Uint8Array 100000 slice | 87.084 us/op | 144.02 us/op | 0.60 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 87.217 us/op | 322.71 us/op | 0.27 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 87.617 us/op | 420.80 us/op | 0.21 | | Copy Uint8Array 100000 slice + set | 160.56 us/op | 762.08 us/op | 0.21 | | Copy Uint8Array 100000 subarray + set | 86.770 us/op | 415.04 us/op | 0.21 | | Copy Uint8Array 100000 slice arrayBuffer | 87.820 us/op | 437.70 us/op | 0.20 | | Uint64 deserialize 100000 - iterate Uint8Array | 1.8410 ms/op | 2.7068 ms/op | 0.68 | | Uint64 deserialize 100000 - by Uint32A | 1.8440 ms/op | 2.4316 ms/op | 0.76 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 1.8358 ms/op | 2.4497 ms/op | 0.75 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 4.9265 ms/op | 8.0940 ms/op | 0.61 | | Uint64 deserialize 100000 - by byte | 43.457 ms/op | 68.528 ms/op | 0.63 |

by benchmarkbot/action

wemeetagain commented 5 months ago

:robot: Release is at https://github.com/ChainSafe/ssz/releases/tag/ssz-v0.14.1 :sunflower: