ChainSafe / ssz

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

chore: release master #351

Closed wemeetagain closed 6 months ago

wemeetagain commented 7 months ago

:robot: I have created a release beep boop

persistent-merkle-tree: 0.7.0 ## [0.7.0](https://github.com/ChainSafe/ssz/compare/persistent-merkle-tree-v0.6.1...persistent-merkle-tree-v0.7.0) (2024-03-12) ### Features * new type for list of uint64 ([#352](https://github.com/ChainSafe/ssz/issues/352)) ([e131b5a](https://github.com/ChainSafe/ssz/commit/e131b5a9080f8719d624df97d8a4462081a65807))
ssz: 0.15.0 ## [0.15.0](https://github.com/ChainSafe/ssz/compare/ssz-v0.14.3...ssz-v0.15.0) (2024-03-12) ### Features * add capability to cache merkle roots for lists ([#349](https://github.com/ChainSafe/ssz/issues/349)) ([14c4457](https://github.com/ChainSafe/ssz/commit/14c4457026a9fbea5bfe5c66580f7c8a8bee790a)) * improve ViewDU.serialize() ([#350](https://github.com/ChainSafe/ssz/issues/350)) ([4ba45d3](https://github.com/ChainSafe/ssz/commit/4ba45d3afec08a8aaf853237c3cd8439ca62bca5)) * new type for list of uint64 ([#352](https://github.com/ChainSafe/ssz/issues/352)) ([e131b5a](https://github.com/ChainSafe/ssz/commit/e131b5a9080f8719d624df97d8a4462081a65807)) ### Dependencies * The following workspace dependencies were updated * dependencies * @chainsafe/persistent-merkle-tree bumped to 0.7.0

This PR was generated with Release Please. See documentation.

github-actions[bot] commented 7 months ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: 10e575fcf1aef39f7e85b1155abc38fcf88252cc | Previous: 4ba45d3afec08a8aaf853237c3cd8439ca62bca5 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 48.235 ms/op | 47.626 ms/op | 1.01 | | digest64 50023 times | 50.086 ms/op | 48.766 ms/op | 1.03 | | digest 50023 times | 49.827 ms/op | 48.562 ms/op | 1.03 | | input length 32 | 1.2050 us/op | 1.1440 us/op | 1.05 | | input length 64 | 1.3080 us/op | 1.2590 us/op | 1.04 | | input length 128 | 2.2840 us/op | 2.1990 us/op | 1.04 | | input length 256 | 3.3920 us/op | 3.2950 us/op | 1.03 | | input length 512 | 5.5430 us/op | 5.4550 us/op | 1.02 | | input length 1024 | 10.787 us/op | 10.734 us/op | 1.00 | | digest 1000000 times | 814.47 ms/op | 799.75 ms/op | 1.02 | | hashObjectToByteArray 50023 times | 1.4291 ms/op | 1.4283 ms/op | 1.00 | | byteArrayToHashObject 50023 times | 1.9047 ms/op | 1.6531 ms/op | 1.15 | | getGindicesAtDepth | 4.3640 us/op | 3.8300 us/op | 1.14 | | iterateAtDepth | 8.9060 us/op | 8.1620 us/op | 1.09 | | getGindexBits | 466.00 ns/op | 409.00 ns/op | 1.14 | | gindexIterator | 1.0330 us/op | 916.00 ns/op | 1.13 | | hash 2 Uint8Array 2250026 times - as-sha256 | 2.2684 s/op | 2.2241 s/op | 1.02 | | hashTwoObjects 2250026 times - as-sha256 | 2.1496 s/op | 2.1681 s/op | 0.99 | | hash 2 Uint8Array 2250026 times - noble | 5.2201 s/op | 4.8775 s/op | 1.07 | | hashTwoObjects 2250026 times - noble | 7.1660 s/op | 7.1266 s/op | 1.01 | | getNodeH() x7812.5 avg hindex | 14.642 us/op | 14.658 us/op | 1.00 | | getNodeH() x7812.5 index 0 | 5.1640 us/op | 5.0970 us/op | 1.01 | | getNodeH() x7812.5 index 7 | 5.1340 us/op | 5.1230 us/op | 1.00 | | getNodeH() x7812.5 index 7 with key array | 5.1430 us/op | 5.1580 us/op | 1.00 | | new LeafNode() x7812.5 | 112.09 us/op | 113.92 us/op | 0.98 | | multiproof - depth 15, 1 requested leaves | 9.4950 us/op | 9.6370 us/op | 0.99 | | tree offset multiproof - depth 15, 1 requested leaves | 20.619 us/op | 20.741 us/op | 0.99 | | compact multiproof - depth 15, 1 requested leaves | 5.4140 us/op | 5.5410 us/op | 0.98 | | multiproof - depth 15, 2 requested leaves | 13.210 us/op | 13.901 us/op | 0.95 | | tree offset multiproof - depth 15, 2 requested leaves | 23.721 us/op | 24.172 us/op | 0.98 | | compact multiproof - depth 15, 2 requested leaves | 3.2800 us/op | 3.3590 us/op | 0.98 | | multiproof - depth 15, 3 requested leaves | 18.307 us/op | 17.930 us/op | 1.02 | | tree offset multiproof - depth 15, 3 requested leaves | 30.585 us/op | 30.303 us/op | 1.01 | | compact multiproof - depth 15, 3 requested leaves | 4.5170 us/op | 4.8050 us/op | 0.94 | | multiproof - depth 15, 4 requested leaves | 24.216 us/op | 24.431 us/op | 0.99 | | tree offset multiproof - depth 15, 4 requested leaves | 37.593 us/op | 39.128 us/op | 0.96 | | compact multiproof - depth 15, 4 requested leaves | 5.3800 us/op | 5.5560 us/op | 0.97 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 1.9890 us/op | 2.0330 us/op | 0.98 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 1.9690 us/op | 2.0170 us/op | 0.98 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 1.9730 us/op | 2.0280 us/op | 0.97 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 1.9650 us/op | 1.7040 us/op | 1.15 | | subtreeFillToContents depth 40 count 250000 | 39.787 ms/op | 43.040 ms/op | 0.92 | | setRoot - gindexBitstring | 9.2305 ms/op | 9.1506 ms/op | 1.01 | | setRoot - gindex | 9.7978 ms/op | 9.7399 ms/op | 1.01 | | getRoot - gindexBitstring | 2.4781 ms/op | 2.6241 ms/op | 0.94 | | getRoot - gindex | 3.5679 ms/op | 3.4723 ms/op | 1.03 | | getHashObject then setHashObject | 10.783 ms/op | 10.609 ms/op | 1.02 | | setNodeWithFn | 10.051 ms/op | 9.4102 ms/op | 1.07 | | getNodeAtDepth depth 0 x100000 | 1.1765 ms/op | 1.1486 ms/op | 1.02 | | setNodeAtDepth depth 0 x100000 | 2.6951 ms/op | 2.7101 ms/op | 0.99 | | getNodesAtDepth depth 0 x100000 | 1.0841 ms/op | 1.1099 ms/op | 0.98 | | setNodesAtDepth depth 0 x100000 | 1.4858 ms/op | 1.4866 ms/op | 1.00 | | getNodeAtDepth depth 1 x100000 | 1.2074 ms/op | 1.2062 ms/op | 1.00 | | setNodeAtDepth depth 1 x100000 | 5.9575 ms/op | 5.9247 ms/op | 1.01 | | getNodesAtDepth depth 1 x100000 | 1.2111 ms/op | 1.2117 ms/op | 1.00 | | setNodesAtDepth depth 1 x100000 | 4.9596 ms/op | 4.9086 ms/op | 1.01 | | getNodeAtDepth depth 2 x100000 | 1.4815 ms/op | 1.4837 ms/op | 1.00 | | setNodeAtDepth depth 2 x100000 | 10.097 ms/op | 9.9972 ms/op | 1.01 | | getNodesAtDepth depth 2 x100000 | 19.539 ms/op | 21.440 ms/op | 0.91 | | setNodesAtDepth depth 2 x100000 | 14.905 ms/op | 15.040 ms/op | 0.99 | | tree.getNodesAtDepth - gindexes | 6.7697 ms/op | 8.1878 ms/op | 0.83 | | tree.getNodesAtDepth - push all nodes | 2.2965 ms/op | 2.4278 ms/op | 0.95 | | tree.getNodesAtDepth - navigation | 157.00 us/op | 161.35 us/op | 0.97 | | tree.setNodesAtDepth - indexes | 401.41 us/op | 448.89 us/op | 0.89 | | set at depth 8 | 550.00 ns/op | 592.00 ns/op | 0.93 | | set at depth 16 | 688.00 ns/op | 711.00 ns/op | 0.97 | | set at depth 32 | 1.0840 us/op | 1.1270 us/op | 0.96 | | iterateNodesAtDepth 8 256 | 14.872 us/op | 15.669 us/op | 0.95 | | getNodesAtDepth 8 256 | 3.5310 us/op | 3.6780 us/op | 0.96 | | iterateNodesAtDepth 16 65536 | 4.6352 ms/op | 4.6907 ms/op | 0.99 | | getNodesAtDepth 16 65536 | 2.0424 ms/op | 1.9718 ms/op | 1.04 | | iterateNodesAtDepth 32 250000 | 19.927 ms/op | 16.803 ms/op | 1.19 | | getNodesAtDepth 32 250000 | 4.9032 ms/op | 4.8685 ms/op | 1.01 | | iterateNodesAtDepth 40 250000 | 17.092 ms/op | 18.409 ms/op | 0.93 | | getNodesAtDepth 40 250000 | 4.2670 ms/op | 4.2908 ms/op | 0.99 | | 250k validators | 7.5797 s/op | 7.7304 s/op | 0.98 | | bitlist bytes to struct (120,90) | 638.00 ns/op | 654.00 ns/op | 0.98 | | bitlist bytes to tree (120,90) | 2.8280 us/op | 2.4620 us/op | 1.15 | | bitlist bytes to struct (2048,2048) | 1.1730 us/op | 1.1530 us/op | 1.02 | | bitlist bytes to tree (2048,2048) | 3.9540 us/op | 3.8170 us/op | 1.04 | | ByteListType - deserialize | 10.644 ms/op | 9.8241 ms/op | 1.08 | | BasicListType - deserialize | 7.9019 ms/op | 7.8436 ms/op | 1.01 | | ByteListType - serialize | 10.475 ms/op | 9.4101 ms/op | 1.11 | | BasicListType - serialize | 11.492 ms/op | 10.644 ms/op | 1.08 | | BasicListType - tree_convertToStruct | 24.130 ms/op | 22.142 ms/op | 1.09 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 5.3792 ms/op | 4.3290 ms/op | 1.24 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 4.1479 ms/op | 4.1392 ms/op | 1.00 | | Array.push len 300000 empty Array - number | 7.1936 ms/op | 6.5239 ms/op | 1.10 | | Array.set len 300000 from new Array - number | 2.8692 ms/op | 1.7226 ms/op | 1.67 | | Array.set len 300000 - number | 6.9649 ms/op | 6.2395 ms/op | 1.12 | | Uint8Array.set len 300000 | 235.15 us/op | 218.87 us/op | 1.07 | | Uint32Array.set len 300000 | 368.14 us/op | 310.11 us/op | 1.19 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 22.691 ms/op | 21.935 ms/op | 1.03 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 11.200 ms/op | 9.3042 ms/op | 1.20 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 209.85 ms/op | 212.00 ms/op | 0.99 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 337.60 ms/op | 290.60 ms/op | 1.16 | | List(Container) len 300000 ViewDU.get(i) | 8.7838 ms/op | 7.1609 ms/op | 1.23 | | List(Container) len 300000 ViewDU.getReadonly(i) | 8.5088 ms/op | 7.2399 ms/op | 1.18 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 41.063 ms/op | 37.501 ms/op | 1.09 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 6.1180 ms/op | 5.3845 ms/op | 1.14 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 6.7350 ms/op | 6.4858 ms/op | 1.04 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 7.0040 ms/op | 6.9733 ms/op | 1.00 | | Array.push len 300000 empty Array - object | 6.8925 ms/op | 6.2557 ms/op | 1.10 | | Array.set len 300000 from new Array - object | 2.0183 ms/op | 1.8893 ms/op | 1.07 | | Array.set len 300000 - object | 6.6480 ms/op | 5.7472 ms/op | 1.16 | | cachePermanentRootStruct no cache | 9.4090 us/op | 9.2100 us/op | 1.02 | | cachePermanentRootStruct with cache | 265.00 ns/op | 234.00 ns/op | 1.13 | | epochParticipation len 250000 rws 7813 | 2.3253 ms/op | 2.3608 ms/op | 0.98 | | deserialize Attestation - tree | 3.2990 us/op | 3.0500 us/op | 1.08 | | deserialize Attestation - struct | 2.2870 us/op | 2.0640 us/op | 1.11 | | deserialize SignedAggregateAndProof - tree | 4.2830 us/op | 3.7920 us/op | 1.13 | | deserialize SignedAggregateAndProof - struct | 3.4330 us/op | 3.0050 us/op | 1.14 | | deserialize SyncCommitteeMessage - tree | 1.1650 us/op | 1.1050 us/op | 1.05 | | deserialize SyncCommitteeMessage - struct | 1.3990 us/op | 1.1930 us/op | 1.17 | | deserialize SignedContributionAndProof - tree | 2.1730 us/op | 1.9080 us/op | 1.14 | | deserialize SignedContributionAndProof - struct | 3.0080 us/op | 2.4710 us/op | 1.22 | | deserialize SignedBeaconBlock - tree | 242.08 us/op | 214.96 us/op | 1.13 | | deserialize SignedBeaconBlock - struct | 146.44 us/op | 130.19 us/op | 1.12 | | BeaconState vc 300000 - deserialize tree | 596.29 ms/op | 587.71 ms/op | 1.01 | | BeaconState vc 300000 - serialize tree | 122.07 ms/op | 140.04 ms/op | 0.87 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 925.00 ns/op | 843.00 ns/op | 1.10 | | BeaconState.historicalRoots vc 300000 - serialize tree | 854.00 ns/op | 711.00 ns/op | 1.20 | | BeaconState.validators vc 300000 - deserialize tree | 544.27 ms/op | 572.69 ms/op | 0.95 | | BeaconState.validators vc 300000 - serialize tree | 106.24 ms/op | 111.15 ms/op | 0.96 | | BeaconState.balances vc 300000 - deserialize tree | 20.949 ms/op | 20.944 ms/op | 1.00 | | BeaconState.balances vc 300000 - serialize tree | 4.8148 ms/op | 6.9318 ms/op | 0.69 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 570.62 us/op | 720.41 us/op | 0.79 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 290.32 us/op | 286.56 us/op | 1.01 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 561.08 us/op | 712.00 us/op | 0.79 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 292.82 us/op | 274.23 us/op | 1.07 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 20.493 ms/op | 21.634 ms/op | 0.95 | | BeaconState.inactivityScores vc 300000 - serialize tree | 4.0156 ms/op | 6.4073 ms/op | 0.63 | | hashTreeRoot Attestation - struct | 28.322 us/op | 31.696 us/op | 0.89 | | hashTreeRoot Attestation - tree | 17.872 us/op | 21.952 us/op | 0.81 | | hashTreeRoot SignedAggregateAndProof - struct | 41.196 us/op | 45.271 us/op | 0.91 | | hashTreeRoot SignedAggregateAndProof - tree | 28.439 us/op | 28.743 us/op | 0.99 | | hashTreeRoot SyncCommitteeMessage - struct | 10.017 us/op | 11.000 us/op | 0.91 | | hashTreeRoot SyncCommitteeMessage - tree | 6.2120 us/op | 6.2280 us/op | 1.00 | | hashTreeRoot SignedContributionAndProof - struct | 28.414 us/op | 33.687 us/op | 0.84 | | hashTreeRoot SignedContributionAndProof - tree | 20.041 us/op | 23.518 us/op | 0.85 | | hashTreeRoot SignedBeaconBlock - struct | 2.3892 ms/op | 2.7102 ms/op | 0.88 | | hashTreeRoot SignedBeaconBlock - tree | 1.6788 ms/op | 1.6762 ms/op | 1.00 | | hashTreeRoot Validator - struct | 13.471 us/op | 14.709 us/op | 0.92 | | hashTreeRoot Validator - tree | 11.784 us/op | 12.001 us/op | 0.98 | | BeaconState vc 300000 - hashTreeRoot tree | 3.6600 s/op | 3.7482 s/op | 0.98 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 1.5080 us/op | 1.5960 us/op | 0.94 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 3.4913 s/op | 3.5672 s/op | 0.98 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 85.141 ms/op | 89.506 ms/op | 0.95 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 9.1583 ms/op | 9.0466 ms/op | 1.01 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 8.9857 ms/op | 9.0494 ms/op | 0.99 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 92.281 ms/op | 83.307 ms/op | 1.11 | | hash64 x18 | 19.631 us/op | 19.753 us/op | 0.99 | | hashTwoObjects x18 | 17.912 us/op | 17.893 us/op | 1.00 | | hash64 x1740 | 1.8597 ms/op | 1.8814 ms/op | 0.99 | | hashTwoObjects x1740 | 1.7011 ms/op | 1.6963 ms/op | 1.00 | | hash64 x2700000 | 2.8773 s/op | 2.8853 s/op | 1.00 | | hashTwoObjects x2700000 | 2.6544 s/op | 2.6426 s/op | 1.00 | | get_exitEpoch - ContainerType | 218.00 ns/op | 218.00 ns/op | 1.00 | | get_exitEpoch - ContainerNodeStructType | 214.00 ns/op | 226.00 ns/op | 0.95 | | set_exitEpoch - ContainerType | 251.00 ns/op | 271.00 ns/op | 0.93 | | set_exitEpoch - ContainerNodeStructType | 227.00 ns/op | 229.00 ns/op | 0.99 | | get_pubkey - ContainerType | 1.1790 us/op | 1.3240 us/op | 0.89 | | get_pubkey - ContainerNodeStructType | 222.00 ns/op | 235.00 ns/op | 0.94 | | hashTreeRoot - ContainerType | 417.00 ns/op | 458.00 ns/op | 0.91 | | hashTreeRoot - ContainerNodeStructType | 438.00 ns/op | 494.00 ns/op | 0.89 | | createProof - ContainerType | 4.3090 us/op | 4.5150 us/op | 0.95 | | createProof - ContainerNodeStructType | 21.834 us/op | 24.803 us/op | 0.88 | | serialize - ContainerType | 1.8940 us/op | 2.0580 us/op | 0.92 | | serialize - ContainerNodeStructType | 1.6260 us/op | 1.8540 us/op | 0.88 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 4.1710 us/op | 4.2560 us/op | 0.98 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 11.884 us/op | 12.032 us/op | 0.99 | | Array - for of | 6.0090 us/op | 8.6650 us/op | 0.69 | | Array - for(;;) | 5.2920 us/op | 7.9220 us/op | 0.67 | | basicListValue.readonlyValuesArray() | 4.3569 ms/op | 4.0973 ms/op | 1.06 | | basicListValue.readonlyValuesArray() + loop all | 4.0464 ms/op | 4.2278 ms/op | 0.96 | | compositeListValue.readonlyValuesArray() | 28.501 ms/op | 28.914 ms/op | 0.99 | | compositeListValue.readonlyValuesArray() + loop all | 22.705 ms/op | 24.675 ms/op | 0.92 | | Number64UintType - get balances list | 4.4963 ms/op | 4.6193 ms/op | 0.97 | | Number64UintType - set balances list | 10.304 ms/op | 11.068 ms/op | 0.93 | | Number64UintType - get and increase 10 then set | 40.471 ms/op | 40.400 ms/op | 1.00 | | Number64UintType - increase 10 using applyDelta | 16.838 ms/op | 17.962 ms/op | 0.94 | | Number64UintType - increase 10 using applyDeltaInBatch | 16.736 ms/op | 17.446 ms/op | 0.96 | | tree_newTreeFromUint64Deltas | 16.003 ms/op | 14.939 ms/op | 1.07 | | unsafeUint8ArrayToTree | 31.414 ms/op | 28.897 ms/op | 1.09 | | bitLength(50) | 237.00 ns/op | 241.00 ns/op | 0.98 | | bitLengthStr(50) | 254.00 ns/op | 253.00 ns/op | 1.00 | | bitLength(8000) | 231.00 ns/op | 233.00 ns/op | 0.99 | | bitLengthStr(8000) | 295.00 ns/op | 291.00 ns/op | 1.01 | | bitLength(250000) | 232.00 ns/op | 236.00 ns/op | 0.98 | | bitLengthStr(250000) | 348.00 ns/op | 321.00 ns/op | 1.08 | | floor - Math.floor (53) | 0.46412 ns/op | 0.46388 ns/op | 1.00 | | floor - << 0 (53) | 0.46635 ns/op | 0.46686 ns/op | 1.00 | | floor - Math.floor (512) | 0.46438 ns/op | 0.46456 ns/op | 1.00 | | floor - << 0 (512) | 0.46438 ns/op | 0.46471 ns/op | 1.00 | | fnIf(0) | 1.5477 ns/op | 1.5471 ns/op | 1.00 | | fnSwitch(0) | 2.5203 ns/op | 2.4750 ns/op | 1.02 | | fnObj(0) | 0.46520 ns/op | 0.46390 ns/op | 1.00 | | fnArr(0) | 0.47232 ns/op | 0.46569 ns/op | 1.01 | | fnIf(4) | 2.1642 ns/op | 2.1946 ns/op | 0.99 | | fnSwitch(4) | 2.5168 ns/op | 2.4738 ns/op | 1.02 | | fnObj(4) | 0.46425 ns/op | 0.47003 ns/op | 0.99 | | fnArr(4) | 0.46521 ns/op | 0.46557 ns/op | 1.00 | | fnIf(9) | 3.1392 ns/op | 3.0918 ns/op | 1.02 | | fnSwitch(9) | 2.4771 ns/op | 2.4740 ns/op | 1.00 | | fnObj(9) | 0.46619 ns/op | 0.46398 ns/op | 1.00 | | fnArr(9) | 0.46486 ns/op | 0.46397 ns/op | 1.00 | | Container {a,b,vec} - as struct x100000 | 46.625 us/op | 46.579 us/op | 1.00 | | Container {a,b,vec} - as tree x100000 | 371.85 us/op | 377.55 us/op | 0.98 | | Container {a,vec,b} - as struct x100000 | 77.812 us/op | 77.763 us/op | 1.00 | | Container {a,vec,b} - as tree x100000 | 403.04 us/op | 402.53 us/op | 1.00 | | get 2 props x1000000 - rawObject | 310.26 us/op | 310.06 us/op | 1.00 | | get 2 props x1000000 - proxy | 72.321 ms/op | 71.766 ms/op | 1.01 | | get 2 props x1000000 - customObj | 309.97 us/op | 309.60 us/op | 1.00 | | Simple object binary -> struct | 875.00 ns/op | 648.00 ns/op | 1.35 | | Simple object binary -> tree_backed | 2.3170 us/op | 1.7530 us/op | 1.32 | | Simple object struct -> tree_backed | 3.0310 us/op | 2.2430 us/op | 1.35 | | Simple object tree_backed -> struct | 2.4250 us/op | 1.8130 us/op | 1.34 | | Simple object struct -> binary | 1.2370 us/op | 953.00 ns/op | 1.30 | | Simple object tree_backed -> binary | 2.0930 us/op | 1.5730 us/op | 1.33 | | aggregationBits binary -> struct | 853.00 ns/op | 581.00 ns/op | 1.47 | | aggregationBits binary -> tree_backed | 2.6120 us/op | 2.1910 us/op | 1.19 | | aggregationBits struct -> tree_backed | 3.0130 us/op | 2.6200 us/op | 1.15 | | aggregationBits tree_backed -> struct | 1.3020 us/op | 1.1230 us/op | 1.16 | | aggregationBits struct -> binary | 909.00 ns/op | 765.00 ns/op | 1.19 | | aggregationBits tree_backed -> binary | 1.1040 us/op | 983.00 ns/op | 1.12 | | List(uint8) 100000 binary -> struct | 1.3330 ms/op | 1.2698 ms/op | 1.05 | | List(uint8) 100000 binary -> tree_backed | 94.247 us/op | 88.043 us/op | 1.07 | | List(uint8) 100000 struct -> tree_backed | 1.3629 ms/op | 1.3621 ms/op | 1.00 | | List(uint8) 100000 tree_backed -> struct | 1.0076 ms/op | 958.63 us/op | 1.05 | | List(uint8) 100000 struct -> binary | 1.2354 ms/op | 1.2323 ms/op | 1.00 | | List(uint8) 100000 tree_backed -> binary | 87.184 us/op | 85.924 us/op | 1.01 | | List(uint64Number) 100000 binary -> struct | 1.2168 ms/op | 1.2487 ms/op | 0.97 | | List(uint64Number) 100000 binary -> tree_backed | 3.2108 ms/op | 3.1935 ms/op | 1.01 | | List(uint64Number) 100000 struct -> tree_backed | 4.8968 ms/op | 4.4737 ms/op | 1.09 | | List(uint64Number) 100000 tree_backed -> struct | 2.2240 ms/op | 2.1630 ms/op | 1.03 | | List(uint64Number) 100000 struct -> binary | 1.4386 ms/op | 1.5275 ms/op | 0.94 | | List(uint64Number) 100000 tree_backed -> binary | 816.05 us/op | 786.68 us/op | 1.04 | | List(Uint64Bigint) 100000 binary -> struct | 3.3226 ms/op | 3.6291 ms/op | 0.92 | | List(Uint64Bigint) 100000 binary -> tree_backed | 3.2140 ms/op | 3.2235 ms/op | 1.00 | | List(Uint64Bigint) 100000 struct -> tree_backed | 5.4922 ms/op | 5.4212 ms/op | 1.01 | | List(Uint64Bigint) 100000 tree_backed -> struct | 4.4091 ms/op | 4.3966 ms/op | 1.00 | | List(Uint64Bigint) 100000 struct -> binary | 2.0840 ms/op | 2.1193 ms/op | 0.98 | | List(Uint64Bigint) 100000 tree_backed -> binary | 859.39 us/op | 862.34 us/op | 1.00 | | Vector(Root) 100000 binary -> struct | 30.954 ms/op | 26.419 ms/op | 1.17 | | Vector(Root) 100000 binary -> tree_backed | 31.868 ms/op | 29.695 ms/op | 1.07 | | Vector(Root) 100000 struct -> tree_backed | 35.526 ms/op | 33.953 ms/op | 1.05 | | Vector(Root) 100000 tree_backed -> struct | 44.688 ms/op | 42.598 ms/op | 1.05 | | Vector(Root) 100000 struct -> binary | 1.9101 ms/op | 1.8653 ms/op | 1.02 | | Vector(Root) 100000 tree_backed -> binary | 9.0201 ms/op | 8.6160 ms/op | 1.05 | | List(Validator) 100000 binary -> struct | 96.272 ms/op | 103.21 ms/op | 0.93 | | List(Validator) 100000 binary -> tree_backed | 271.92 ms/op | 283.23 ms/op | 0.96 | | List(Validator) 100000 struct -> tree_backed | 313.10 ms/op | 295.03 ms/op | 1.06 | | List(Validator) 100000 tree_backed -> struct | 199.49 ms/op | 191.54 ms/op | 1.04 | | List(Validator) 100000 struct -> binary | 34.925 ms/op | 32.658 ms/op | 1.07 | | List(Validator) 100000 tree_backed -> binary | 101.19 ms/op | 101.10 ms/op | 1.00 | | List(Validator-NS) 100000 binary -> struct | 98.587 ms/op | 103.83 ms/op | 0.95 | | List(Validator-NS) 100000 binary -> tree_backed | 156.14 ms/op | 150.65 ms/op | 1.04 | | List(Validator-NS) 100000 struct -> tree_backed | 196.71 ms/op | 185.17 ms/op | 1.06 | | List(Validator-NS) 100000 tree_backed -> struct | 153.43 ms/op | 148.16 ms/op | 1.04 | | List(Validator-NS) 100000 struct -> binary | 35.404 ms/op | 31.976 ms/op | 1.11 | | List(Validator-NS) 100000 tree_backed -> binary | 36.431 ms/op | 37.281 ms/op | 0.98 | | get epochStatuses - MutableVector | 92.423 us/op | 94.342 us/op | 0.98 | | get epochStatuses - ViewDU | 202.86 us/op | 196.48 us/op | 1.03 | | set epochStatuses - ListTreeView | 1.4526 ms/op | 1.3850 ms/op | 1.05 | | set epochStatuses - ListTreeView - set() | 435.76 us/op | 428.20 us/op | 1.02 | | set epochStatuses - ListTreeView - commit() | 410.49 us/op | 451.72 us/op | 0.91 | | bitstring | 650.01 ns/op | 640.48 ns/op | 1.01 | | bit mask | 14.103 ns/op | 14.475 ns/op | 0.97 | | struct - increase slot to 1000000 | 929.69 us/op | 927.66 us/op | 1.00 | | UintNumberType - increase slot to 1000000 | 28.504 ms/op | 28.514 ms/op | 1.00 | | UintBigintType - increase slot to 1000000 | 435.75 ms/op | 392.56 ms/op | 1.11 | | UintBigint8 x 100000 tree_deserialize | 4.7232 ms/op | 4.5241 ms/op | 1.04 | | UintBigint8 x 100000 tree_serialize | 1.2962 ms/op | 1.1976 ms/op | 1.08 | | UintBigint16 x 100000 tree_deserialize | 5.3793 ms/op | 4.5852 ms/op | 1.17 | | UintBigint16 x 100000 tree_serialize | 1.1364 ms/op | 1.1336 ms/op | 1.00 | | UintBigint32 x 100000 tree_deserialize | 5.1935 ms/op | 4.6705 ms/op | 1.11 | | UintBigint32 x 100000 tree_serialize | 1.1942 ms/op | 1.1907 ms/op | 1.00 | | UintBigint64 x 100000 tree_deserialize | 5.6904 ms/op | 5.3161 ms/op | 1.07 | | UintBigint64 x 100000 tree_serialize | 1.5650 ms/op | 1.5686 ms/op | 1.00 | | UintBigint8 x 100000 value_deserialize | 433.50 us/op | 433.90 us/op | 1.00 | | UintBigint8 x 100000 value_serialize | 579.52 us/op | 569.09 us/op | 1.02 | | UintBigint16 x 100000 value_deserialize | 464.99 us/op | 465.01 us/op | 1.00 | | UintBigint16 x 100000 value_serialize | 611.60 us/op | 607.30 us/op | 1.01 | | UintBigint32 x 100000 value_deserialize | 433.58 us/op | 433.43 us/op | 1.00 | | UintBigint32 x 100000 value_serialize | 612.48 us/op | 604.95 us/op | 1.01 | | UintBigint64 x 100000 value_deserialize | 466.03 us/op | 465.37 us/op | 1.00 | | UintBigint64 x 100000 value_serialize | 790.32 us/op | 780.15 us/op | 1.01 | | UintBigint8 x 100000 deserialize | 4.6803 ms/op | 4.5961 ms/op | 1.02 | | UintBigint8 x 100000 serialize | 1.4157 ms/op | 1.3944 ms/op | 1.02 | | UintBigint16 x 100000 deserialize | 4.6840 ms/op | 4.5642 ms/op | 1.03 | | UintBigint16 x 100000 serialize | 1.4429 ms/op | 1.4707 ms/op | 0.98 | | UintBigint32 x 100000 deserialize | 5.4756 ms/op | 5.2683 ms/op | 1.04 | | UintBigint32 x 100000 serialize | 2.8387 ms/op | 2.7389 ms/op | 1.04 | | UintBigint64 x 100000 deserialize | 4.1742 ms/op | 3.6611 ms/op | 1.14 | | UintBigint64 x 100000 serialize | 1.5083 ms/op | 1.4729 ms/op | 1.02 | | UintBigint128 x 100000 deserialize | 5.8398 ms/op | 5.7849 ms/op | 1.01 | | UintBigint128 x 100000 serialize | 17.173 ms/op | 16.333 ms/op | 1.05 | | UintBigint256 x 100000 deserialize | 10.814 ms/op | 10.805 ms/op | 1.00 | | UintBigint256 x 100000 serialize | 52.153 ms/op | 49.442 ms/op | 1.05 | | Slice from Uint8Array x25000 | 989.99 us/op | 985.36 us/op | 1.00 | | Slice from ArrayBuffer x25000 | 17.026 ms/op | 17.731 ms/op | 0.96 | | Slice from ArrayBuffer x25000 + new Uint8Array | 18.809 ms/op | 18.373 ms/op | 1.02 | | Copy Uint8Array 100000 iterate | 807.60 us/op | 794.62 us/op | 1.02 | | Copy Uint8Array 100000 slice | 92.499 us/op | 85.020 us/op | 1.09 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 92.297 us/op | 85.053 us/op | 1.09 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 92.672 us/op | 85.049 us/op | 1.09 | | Copy Uint8Array 100000 slice + set | 164.06 us/op | 146.66 us/op | 1.12 | | Copy Uint8Array 100000 subarray + set | 91.925 us/op | 84.537 us/op | 1.09 | | Copy Uint8Array 100000 slice arrayBuffer | 92.451 us/op | 85.222 us/op | 1.08 | | Uint64 deserialize 100000 - iterate Uint8Array | 1.7721 ms/op | 1.7234 ms/op | 1.03 | | Uint64 deserialize 100000 - by Uint32A | 1.7857 ms/op | 1.7312 ms/op | 1.03 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 1.7780 ms/op | 1.8496 ms/op | 0.96 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 4.8652 ms/op | 4.8581 ms/op | 1.00 | | Uint64 deserialize 100000 - by byte | 65.505 ms/op | 65.144 ms/op | 1.01 |

by benchmarkbot/action

wemeetagain commented 6 months ago

:robot: Release is at https://github.com/ChainSafe/ssz/releases/tag/persistent-merkle-tree-v0.7.0 :sunflower:

wemeetagain commented 6 months ago

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