ChainSafe / ssz

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

chore: release master #375

Closed wemeetagain closed 2 months ago

wemeetagain commented 4 months ago

:robot: I have created a release beep boop

as-sha256: 0.5.0 ## [0.5.0](https://github.com/ChainSafe/ssz/compare/as-sha256-v0.4.2...as-sha256-v0.5.0) (2024-08-06) ### ⚠ BREAKING CHANGES * implement hashInto() api for as-sha256 ([#382](https://github.com/ChainSafe/ssz/issues/382)) ### Features * implement hashInto() api for as-sha256 ([#382](https://github.com/ChainSafe/ssz/issues/382)) ([ccadf43](https://github.com/ChainSafe/ssz/commit/ccadf431cea6164822e72771304192b2728d7bb2)) * SIMD implementation for as-sha256 ([#367](https://github.com/ChainSafe/ssz/issues/367)) ([ec123ec](https://github.com/ChainSafe/ssz/commit/ec123ec3cfcc37ff82635da7a57ad9c74cc9accb)) * use allocUnsafe to allocate hash digests ([#391](https://github.com/ChainSafe/ssz/issues/391)) ([8ea1bb4](https://github.com/ChainSafe/ssz/commit/8ea1bb4809592691e568238520cb3c2aa9257c25))
persistent-merkle-tree: 0.8.0 ## [0.8.0](https://github.com/ChainSafe/ssz/compare/persistent-merkle-tree-v0.7.2...persistent-merkle-tree-v0.8.0) (2024-08-06) ### ⚠ BREAKING CHANGES * implement hashInto() api for as-sha256 ([#382](https://github.com/ChainSafe/ssz/issues/382)) ### Features * implement batch hash utils ([#384](https://github.com/ChainSafe/ssz/issues/384)) ([1578883](https://github.com/ChainSafe/ssz/commit/15788839b71287e2ff22254bfcabba8221b08a00)) * implement HashComputationLevel using LinkedList ([#389](https://github.com/ChainSafe/ssz/issues/389)) ([e2c8329](https://github.com/ChainSafe/ssz/commit/e2c83298f9cdb29de407737df85da9292c8eb754)) * implement hashInto() api for as-sha256 ([#382](https://github.com/ChainSafe/ssz/issues/382)) ([ccadf43](https://github.com/ChainSafe/ssz/commit/ccadf431cea6164822e72771304192b2728d7bb2)) ### Bug Fixes * findDiffDepthi to support more than 31 bytes ([#371](https://github.com/ChainSafe/ssz/issues/371)) ([3a1c8dc](https://github.com/ChainSafe/ssz/commit/3a1c8dc54a571dfed4cc426810472627b334e9b9)) ### Dependencies * The following workspace dependencies were updated * dependencies * @chainsafe/as-sha256 bumped from 0.4.2 to 0.5.0
ssz: 0.17.0 ## [0.17.0](https://github.com/ChainSafe/ssz/compare/ssz-v0.16.0...ssz-v0.17.0) (2024-08-06) ### Features * implement batch hash utils ([#384](https://github.com/ChainSafe/ssz/issues/384)) ([1578883](https://github.com/ChainSafe/ssz/commit/15788839b71287e2ff22254bfcabba8221b08a00)) ### Dependencies * The following workspace dependencies were updated * dependencies * @chainsafe/as-sha256 bumped from 0.4.2 to 0.5.0 * @chainsafe/persistent-merkle-tree bumped from 0.7.2 to 0.8.0

This PR was generated with Release Please. See documentation.

github-actions[bot] commented 4 months ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: d0eff244eebc12932b34803a5f3ca575adc089a7 | Previous: e2c83298f9cdb29de407737df85da9292c8eb754 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 48.214 ms/op | 48.283 ms/op | 1.00 | | digest64 50023 times | 53.847 ms/op | 53.925 ms/op | 1.00 | | digest 50023 times | 58.411 ms/op | 56.018 ms/op | 1.04 | | input length 32 | 1.2120 us/op | 1.2220 us/op | 0.99 | | input length 64 | 1.3970 us/op | 1.3780 us/op | 1.01 | | input length 128 | 2.3680 us/op | 2.3130 us/op | 1.02 | | input length 256 | 3.3980 us/op | 3.4230 us/op | 0.99 | | input length 512 | 5.6710 us/op | 5.6650 us/op | 1.00 | | input length 1024 | 11.015 us/op | 11.012 us/op | 1.00 | | digest 1000000 times | 989.39 ms/op | 904.23 ms/op | 1.09 | | hashObjectToByteArray 50023 times | 1.4277 ms/op | 1.4292 ms/op | 1.00 | | byteArrayToHashObject 50023 times | 2.4931 ms/op | 2.5466 ms/op | 0.98 | | digest64 200092 times | 246.92 ms/op | 224.12 ms/op | 1.10 | | hash 200092 times using batchHash4UintArray64s | 266.45 ms/op | 246.00 ms/op | 1.08 | | digest64HashObjects 200092 times | 198.09 ms/op | 198.56 ms/op | 1.00 | | hash 200092 times using batchHash4HashObjectInputs | 220.29 ms/op | 209.37 ms/op | 1.05 | | getGindicesAtDepth | 4.3180 us/op | 4.3420 us/op | 0.99 | | iterateAtDepth | 7.8180 us/op | 7.8680 us/op | 0.99 | | getGindexBits | 472.00 ns/op | 474.00 ns/op | 1.00 | | gindexIterator | 1.0860 us/op | 1.0850 us/op | 1.00 | | HashComputationLevel.push then loop | 27.082 ms/op | 28.530 ms/op | 0.95 | | HashComputation[] push then loop | 49.160 ms/op | 50.236 ms/op | 0.98 | | hash 2 Uint8Array 500000 times - as-sha256 | 545.11 ms/op | 543.06 ms/op | 1.00 | | hashTwoObjects 500000 times - as-sha256 | 499.56 ms/op | 499.70 ms/op | 1.00 | | executeHashComputations - as-sha256 | 47.831 ms/op | 48.955 ms/op | 0.98 | | hash 2 Uint8Array 500000 times - noble | 1.1475 s/op | 1.1085 s/op | 1.04 | | hashTwoObjects 500000 times - noble | 1.6967 s/op | 1.6359 s/op | 1.04 | | executeHashComputations - noble | 42.595 ms/op | 41.984 ms/op | 1.01 | | hash 2 Uint8Array 500000 times - hashtree | 232.97 ms/op | 231.70 ms/op | 1.01 | | hashTwoObjects 500000 times - hashtree | 218.35 ms/op | 218.71 ms/op | 1.00 | | executeHashComputations - hashtree | 9.7354 ms/op | 11.257 ms/op | 0.86 | | getNodeH() x7812.5 avg hindex | 12.402 us/op | 12.120 us/op | 1.02 | | getNodeH() x7812.5 index 0 | 6.3820 us/op | 6.2350 us/op | 1.02 | | getNodeH() x7812.5 index 7 | 6.3250 us/op | 6.2620 us/op | 1.01 | | getNodeH() x7812.5 index 7 with key array | 6.2540 us/op | 6.2310 us/op | 1.00 | | new LeafNode() x7812.5 | 14.680 us/op | 14.721 us/op | 1.00 | | getHashComputations 250000 nodes | 19.928 ms/op | 20.740 ms/op | 0.96 | | batchHash 250000 nodes | 333.89 ms/op | 332.58 ms/op | 1.00 | | get root 250000 nodes | 876.03 ms/op | 848.63 ms/op | 1.03 | | getHashComputations 500000 nodes | 33.897 ms/op | 32.072 ms/op | 1.06 | | batchHash 500000 nodes | 585.68 ms/op | 589.79 ms/op | 0.99 | | get root 500000 nodes | 1.5985 s/op | 1.6953 s/op | 0.94 | | getHashComputations 1000000 nodes | 65.164 ms/op | 66.893 ms/op | 0.97 | | batchHash 1000000 nodes | 1.1449 s/op | 1.1904 s/op | 0.96 | | get root 1000000 nodes | 3.2634 s/op | 3.2758 s/op | 1.00 | | multiproof - depth 15, 1 requested leaves | 8.1130 us/op | 8.1990 us/op | 0.99 | | tree offset multiproof - depth 15, 1 requested leaves | 18.371 us/op | 18.005 us/op | 1.02 | | compact multiproof - depth 15, 1 requested leaves | 3.5810 us/op | 3.3190 us/op | 1.08 | | multiproof - depth 15, 2 requested leaves | 11.685 us/op | 11.470 us/op | 1.02 | | tree offset multiproof - depth 15, 2 requested leaves | 21.909 us/op | 21.417 us/op | 1.02 | | compact multiproof - depth 15, 2 requested leaves | 3.5450 us/op | 3.4460 us/op | 1.03 | | multiproof - depth 15, 3 requested leaves | 17.466 us/op | 16.460 us/op | 1.06 | | tree offset multiproof - depth 15, 3 requested leaves | 29.110 us/op | 27.736 us/op | 1.05 | | compact multiproof - depth 15, 3 requested leaves | 4.3070 us/op | 3.8470 us/op | 1.12 | | multiproof - depth 15, 4 requested leaves | 21.820 us/op | 21.360 us/op | 1.02 | | tree offset multiproof - depth 15, 4 requested leaves | 35.378 us/op | 33.505 us/op | 1.06 | | compact multiproof - depth 15, 4 requested leaves | 5.2910 us/op | 4.6560 us/op | 1.14 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 2.0560 us/op | 1.7780 us/op | 1.16 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 2.0540 us/op | 1.7710 us/op | 1.16 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 2.0360 us/op | 1.7590 us/op | 1.16 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 2.0210 us/op | 1.7600 us/op | 1.15 | | subtreeFillToContents depth 40 count 250000 | 42.707 ms/op | 40.913 ms/op | 1.04 | | setRoot - gindexBitstring | 8.7585 ms/op | 10.069 ms/op | 0.87 | | setRoot - gindex | 9.0473 ms/op | 11.192 ms/op | 0.81 | | getRoot - gindexBitstring | 2.4458 ms/op | 2.7527 ms/op | 0.89 | | getRoot - gindex | 3.1931 ms/op | 3.4997 ms/op | 0.91 | | getHashObject then setHashObject | 10.133 ms/op | 11.542 ms/op | 0.88 | | setNodeWithFn | 7.5487 ms/op | 9.2344 ms/op | 0.82 | | getNodeAtDepth depth 0 x100000 | 1.1132 ms/op | 1.1239 ms/op | 0.99 | | setNodeAtDepth depth 0 x100000 | 2.4334 ms/op | 2.8176 ms/op | 0.86 | | getNodesAtDepth depth 0 x100000 | 1.0530 ms/op | 1.0752 ms/op | 0.98 | | setNodesAtDepth depth 0 x100000 | 1.5346 ms/op | 1.5168 ms/op | 1.01 | | getNodeAtDepth depth 1 x100000 | 1.2118 ms/op | 1.2201 ms/op | 0.99 | | setNodeAtDepth depth 1 x100000 | 5.0873 ms/op | 6.0663 ms/op | 0.84 | | getNodesAtDepth depth 1 x100000 | 1.1772 ms/op | 1.1803 ms/op | 1.00 | | setNodesAtDepth depth 1 x100000 | 4.5512 ms/op | 4.9448 ms/op | 0.92 | | getNodeAtDepth depth 2 x100000 | 1.4587 ms/op | 1.5191 ms/op | 0.96 | | setNodeAtDepth depth 2 x100000 | 8.9226 ms/op | 10.419 ms/op | 0.86 | | getNodesAtDepth depth 2 x100000 | 18.593 ms/op | 20.866 ms/op | 0.89 | | setNodesAtDepth depth 2 x100000 | 13.363 ms/op | 15.185 ms/op | 0.88 | | tree.getNodesAtDepth - gindexes | 8.3103 ms/op | 9.4174 ms/op | 0.88 | | tree.getNodesAtDepth - push all nodes | 1.8192 ms/op | 2.3543 ms/op | 0.77 | | tree.getNodesAtDepth - navigation | 234.78 us/op | 240.68 us/op | 0.98 | | tree.setNodesAtDepth - indexes | 423.77 us/op | 428.31 us/op | 0.99 | | set at depth 8 | 456.00 ns/op | 539.00 ns/op | 0.85 | | set at depth 16 | 590.00 ns/op | 690.00 ns/op | 0.86 | | set at depth 32 | 913.00 ns/op | 1.0910 us/op | 0.84 | | iterateNodesAtDepth 8 256 | 13.141 us/op | 14.225 us/op | 0.92 | | getNodesAtDepth 8 256 | 3.3840 us/op | 3.7370 us/op | 0.91 | | iterateNodesAtDepth 16 65536 | 4.1604 ms/op | 4.8578 ms/op | 0.86 | | getNodesAtDepth 16 65536 | 1.4766 ms/op | 2.0362 ms/op | 0.73 | | iterateNodesAtDepth 32 250000 | 15.315 ms/op | 17.249 ms/op | 0.89 | | getNodesAtDepth 32 250000 | 4.2007 ms/op | 4.2028 ms/op | 1.00 | | iterateNodesAtDepth 40 250000 | 15.160 ms/op | 15.834 ms/op | 0.96 | | getNodesAtDepth 40 250000 | 4.2578 ms/op | 4.2640 ms/op | 1.00 | | 250000 validators root getter | 836.69 ms/op | 839.12 ms/op | 1.00 | | 250000 validators batchHash() | 301.98 ms/op | 302.15 ms/op | 1.00 | | 250000 validators hashComputations | 15.501 ms/op | 16.456 ms/op | 0.94 | | bitlist bytes to struct (120,90) | 694.00 ns/op | 714.00 ns/op | 0.97 | | bitlist bytes to tree (120,90) | 2.8620 us/op | 2.8490 us/op | 1.00 | | bitlist bytes to struct (2048,2048) | 1.1460 us/op | 1.1330 us/op | 1.01 | | bitlist bytes to tree (2048,2048) | 4.1390 us/op | 3.8190 us/op | 1.08 | | ByteListType - deserialize | 8.0500 ms/op | 8.6228 ms/op | 0.93 | | BasicListType - deserialize | 17.238 ms/op | 18.370 ms/op | 0.94 | | ByteListType - serialize | 7.9035 ms/op | 7.8883 ms/op | 1.00 | | BasicListType - serialize | 10.705 ms/op | 10.801 ms/op | 0.99 | | BasicListType - tree_convertToStruct | 29.558 ms/op | 30.305 ms/op | 0.98 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 4.5834 ms/op | 4.7521 ms/op | 0.96 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 4.0011 ms/op | 3.9864 ms/op | 1.00 | | Array.push len 300000 empty Array - number | 6.3721 ms/op | 6.4004 ms/op | 1.00 | | Array.set len 300000 from new Array - number | 2.1948 ms/op | 1.7578 ms/op | 1.25 | | Array.set len 300000 - number | 6.0825 ms/op | 5.5145 ms/op | 1.10 | | Uint8Array.set len 300000 | 379.18 us/op | 384.86 us/op | 0.99 | | Uint32Array.set len 300000 | 461.49 us/op | 457.25 us/op | 1.01 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 48.221 ms/op | 48.902 ms/op | 0.99 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 10.797 ms/op | 10.808 ms/op | 1.00 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 208.83 ms/op | 211.65 ms/op | 0.99 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 272.14 ms/op | 282.56 ms/op | 0.96 | | List(Container) len 300000 ViewDU.get(i) | 6.4290 ms/op | 7.1128 ms/op | 0.90 | | List(Container) len 300000 ViewDU.getReadonly(i) | 6.1230 ms/op | 6.6992 ms/op | 0.91 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 40.790 ms/op | 38.870 ms/op | 1.05 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 5.7170 ms/op | 5.3503 ms/op | 1.07 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 6.2985 ms/op | 6.1544 ms/op | 1.02 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 6.0678 ms/op | 6.1494 ms/op | 0.99 | | Array.push len 300000 empty Array - object | 5.8797 ms/op | 6.4628 ms/op | 0.91 | | Array.set len 300000 from new Array - object | 2.0390 ms/op | 2.2925 ms/op | 0.89 | | Array.set len 300000 - object | 5.4759 ms/op | 6.3622 ms/op | 0.86 | | cachePermanentRootStruct no cache | 5.2090 us/op | 5.4170 us/op | 0.96 | | cachePermanentRootStruct with cache | 216.00 ns/op | 219.00 ns/op | 0.99 | | epochParticipation len 250000 rws 7813 | 2.1090 ms/op | 2.2701 ms/op | 0.93 | | deserialize Attestation - tree | 3.9260 us/op | 4.1520 us/op | 0.95 | | deserialize Attestation - struct | 1.7520 us/op | 1.8890 us/op | 0.93 | | deserialize SignedAggregateAndProof - tree | 3.6290 us/op | 3.8280 us/op | 0.95 | | deserialize SignedAggregateAndProof - struct | 2.8540 us/op | 2.9420 us/op | 0.97 | | deserialize SyncCommitteeMessage - tree | 1.0310 us/op | 1.0780 us/op | 0.96 | | deserialize SyncCommitteeMessage - struct | 1.0750 us/op | 1.0940 us/op | 0.98 | | deserialize SignedContributionAndProof - tree | 2.0200 us/op | 2.0800 us/op | 0.97 | | deserialize SignedContributionAndProof - struct | 2.1340 us/op | 2.4440 us/op | 0.87 | | deserialize SignedBeaconBlock - tree | 208.38 us/op | 214.21 us/op | 0.97 | | deserialize SignedBeaconBlock - struct | 113.10 us/op | 119.11 us/op | 0.95 | | BeaconState vc 300000 - deserialize tree | 561.67 ms/op | 575.00 ms/op | 0.98 | | BeaconState vc 300000 - serialize tree | 106.64 ms/op | 121.78 ms/op | 0.88 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 785.00 ns/op | 722.00 ns/op | 1.09 | | BeaconState.historicalRoots vc 300000 - serialize tree | 667.00 ns/op | 631.00 ns/op | 1.06 | | BeaconState.validators vc 300000 - deserialize tree | 523.38 ms/op | 533.45 ms/op | 0.98 | | BeaconState.validators vc 300000 - serialize tree | 108.82 ms/op | 99.653 ms/op | 1.09 | | BeaconState.balances vc 300000 - deserialize tree | 20.856 ms/op | 21.495 ms/op | 0.97 | | BeaconState.balances vc 300000 - serialize tree | 3.1844 ms/op | 3.4719 ms/op | 0.92 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 386.41 us/op | 351.11 us/op | 1.10 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 275.16 us/op | 267.90 us/op | 1.03 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 410.18 us/op | 352.54 us/op | 1.16 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 278.93 us/op | 268.02 us/op | 1.04 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 16.159 ms/op | 16.232 ms/op | 1.00 | | BeaconState.inactivityScores vc 300000 - serialize tree | 4.1728 ms/op | 3.6782 ms/op | 1.13 | | hashTreeRoot Attestation - struct | 22.256 us/op | 22.462 us/op | 0.99 | | hashTreeRoot Attestation - tree | 9.4190 us/op | 8.8020 us/op | 1.07 | | hashTreeRoot SignedAggregateAndProof - struct | 26.178 us/op | 26.948 us/op | 0.97 | | hashTreeRoot SignedAggregateAndProof - tree | 12.832 us/op | 13.101 us/op | 0.98 | | hashTreeRoot SyncCommitteeMessage - struct | 6.7630 us/op | 6.7930 us/op | 1.00 | | hashTreeRoot SyncCommitteeMessage - tree | 3.1390 us/op | 3.2000 us/op | 0.98 | | hashTreeRoot SignedContributionAndProof - struct | 16.039 us/op | 15.929 us/op | 1.01 | | hashTreeRoot SignedContributionAndProof - tree | 8.8490 us/op | 9.0010 us/op | 0.98 | | hashTreeRoot SignedBeaconBlock - struct | 1.3494 ms/op | 1.3448 ms/op | 1.00 | | hashTreeRoot SignedBeaconBlock - tree | 762.28 us/op | 802.90 us/op | 0.95 | | hashTreeRoot Validator - struct | 8.1580 us/op | 8.2920 us/op | 0.98 | | hashTreeRoot Validator - tree | 6.5890 us/op | 6.9700 us/op | 0.95 | | BeaconState vc 300000 - hashTreeRoot tree | 2.1367 s/op | 2.1412 s/op | 1.00 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 1.1300 us/op | 942.00 ns/op | 1.20 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 1.9313 s/op | 2.0453 s/op | 0.94 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 33.402 ms/op | 34.563 ms/op | 0.97 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 4.1115 ms/op | 4.3385 ms/op | 0.95 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 4.1127 ms/op | 4.2266 ms/op | 0.97 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 33.450 ms/op | 34.665 ms/op | 0.96 | | hash64 x18 | 9.2750 us/op | 9.3410 us/op | 0.99 | | hashTwoObjects x18 | 8.6020 us/op | 8.9310 us/op | 0.96 | | hash64 x1740 | 836.00 us/op | 846.46 us/op | 0.99 | | hashTwoObjects x1740 | 803.09 us/op | 812.52 us/op | 0.99 | | hash64 x2700000 | 1.3263 s/op | 1.3243 s/op | 1.00 | | hashTwoObjects x2700000 | 1.2459 s/op | 1.2627 s/op | 0.99 | | get_exitEpoch - ContainerType | 241.00 ns/op | 206.00 ns/op | 1.17 | | get_exitEpoch - ContainerNodeStructType | 227.00 ns/op | 222.00 ns/op | 1.02 | | set_exitEpoch - ContainerType | 257.00 ns/op | 219.00 ns/op | 1.17 | | set_exitEpoch - ContainerNodeStructType | 228.00 ns/op | 216.00 ns/op | 1.06 | | get_pubkey - ContainerType | 1.0310 us/op | 877.00 ns/op | 1.18 | | get_pubkey - ContainerNodeStructType | 236.00 ns/op | 227.00 ns/op | 1.04 | | hashTreeRoot - ContainerType | 381.00 ns/op | 359.00 ns/op | 1.06 | | hashTreeRoot - ContainerNodeStructType | 433.00 ns/op | 418.00 ns/op | 1.04 | | createProof - ContainerType | 3.9260 us/op | 3.8840 us/op | 1.01 | | createProof - ContainerNodeStructType | 20.002 us/op | 20.016 us/op | 1.00 | | serialize - ContainerType | 1.6320 us/op | 1.7490 us/op | 0.93 | | serialize - ContainerNodeStructType | 1.3300 us/op | 1.3840 us/op | 0.96 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 2.6500 us/op | 2.7960 us/op | 0.95 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 6.8970 us/op | 7.2430 us/op | 0.95 | | Array - for of | 5.6560 us/op | 5.8390 us/op | 0.97 | | Array - for(;;) | 5.4590 us/op | 5.6170 us/op | 0.97 | | basicListValue.readonlyValuesArray() | 4.0734 ms/op | 4.1232 ms/op | 0.99 | | basicListValue.readonlyValuesArray() + loop all | 4.4065 ms/op | 4.3600 ms/op | 1.01 | | compositeListValue.readonlyValuesArray() | 30.237 ms/op | 30.249 ms/op | 1.00 | | compositeListValue.readonlyValuesArray() + loop all | 27.326 ms/op | 30.327 ms/op | 0.90 | | Number64UintType - get balances list | 4.0565 ms/op | 4.2097 ms/op | 0.96 | | Number64UintType - set balances list | 8.5635 ms/op | 9.5716 ms/op | 0.89 | | Number64UintType - get and increase 10 then set | 34.816 ms/op | 38.408 ms/op | 0.91 | | Number64UintType - increase 10 using applyDelta | 14.608 ms/op | 15.956 ms/op | 0.92 | | Number64UintType - increase 10 using applyDeltaInBatch | 14.568 ms/op | 15.649 ms/op | 0.93 | | tree_newTreeFromUint64Deltas | 15.880 ms/op | 17.442 ms/op | 0.91 | | unsafeUint8ArrayToTree | 31.439 ms/op | 33.300 ms/op | 0.94 | | bitLength(50) | 232.00 ns/op | 235.00 ns/op | 0.99 | | bitLengthStr(50) | 220.00 ns/op | 220.00 ns/op | 1.00 | | bitLength(8000) | 227.00 ns/op | 224.00 ns/op | 1.01 | | bitLengthStr(8000) | 268.00 ns/op | 256.00 ns/op | 1.05 | | bitLength(250000) | 223.00 ns/op | 225.00 ns/op | 0.99 | | bitLengthStr(250000) | 304.00 ns/op | 301.00 ns/op | 1.01 | | floor - Math.floor (53) | 1.2409 ns/op | 1.2379 ns/op | 1.00 | | floor - << 0 (53) | 1.2378 ns/op | 1.2378 ns/op | 1.00 | | floor - Math.floor (512) | 1.2369 ns/op | 1.2365 ns/op | 1.00 | | floor - << 0 (512) | 1.2402 ns/op | 1.2369 ns/op | 1.00 | | fnIf(0) | 1.5465 ns/op | 1.5470 ns/op | 1.00 | | fnSwitch(0) | 2.1649 ns/op | 2.1647 ns/op | 1.00 | | fnObj(0) | 1.5487 ns/op | 1.5465 ns/op | 1.00 | | fnArr(0) | 1.5466 ns/op | 1.5482 ns/op | 1.00 | | fnIf(4) | 2.1649 ns/op | 2.1803 ns/op | 0.99 | | fnSwitch(4) | 2.1652 ns/op | 2.1657 ns/op | 1.00 | | fnObj(4) | 1.5612 ns/op | 1.5461 ns/op | 1.01 | | fnArr(4) | 1.5543 ns/op | 1.5517 ns/op | 1.00 | | fnIf(9) | 3.0944 ns/op | 3.0923 ns/op | 1.00 | | fnSwitch(9) | 2.1766 ns/op | 2.1655 ns/op | 1.01 | | fnObj(9) | 1.5484 ns/op | 1.5900 ns/op | 0.97 | | fnArr(9) | 1.5491 ns/op | 1.5471 ns/op | 1.00 | | Container {a,b,vec} - as struct x100000 | 123.95 us/op | 123.90 us/op | 1.00 | | Container {a,b,vec} - as tree x100000 | 340.80 us/op | 340.51 us/op | 1.00 | | Container {a,vec,b} - as struct x100000 | 154.76 us/op | 154.83 us/op | 1.00 | | Container {a,vec,b} - as tree x100000 | 371.24 us/op | 371.32 us/op | 1.00 | | get 2 props x1000000 - rawObject | 309.62 us/op | 309.69 us/op | 1.00 | | get 2 props x1000000 - proxy | 72.705 ms/op | 72.976 ms/op | 1.00 | | get 2 props x1000000 - customObj | 310.78 us/op | 309.51 us/op | 1.00 | | Simple object binary -> struct | 551.00 ns/op | 583.00 ns/op | 0.95 | | Simple object binary -> tree_backed | 998.00 ns/op | 979.00 ns/op | 1.02 | | Simple object struct -> tree_backed | 1.5380 us/op | 1.6040 us/op | 0.96 | | Simple object tree_backed -> struct | 1.4900 us/op | 1.5890 us/op | 0.94 | | Simple object struct -> binary | 813.00 ns/op | 878.00 ns/op | 0.93 | | Simple object tree_backed -> binary | 1.2630 us/op | 1.3250 us/op | 0.95 | | aggregationBits binary -> struct | 457.00 ns/op | 448.00 ns/op | 1.02 | | aggregationBits binary -> tree_backed | 1.8750 us/op | 1.8880 us/op | 0.99 | | aggregationBits struct -> tree_backed | 2.1910 us/op | 2.2560 us/op | 0.97 | | aggregationBits tree_backed -> struct | 933.00 ns/op | 1.0340 us/op | 0.90 | | aggregationBits struct -> binary | 676.00 ns/op | 670.00 ns/op | 1.01 | | aggregationBits tree_backed -> binary | 841.00 ns/op | 942.00 ns/op | 0.89 | | List(uint8) 100000 binary -> struct | 1.4781 ms/op | 1.4444 ms/op | 1.02 | | List(uint8) 100000 binary -> tree_backed | 88.869 us/op | 91.474 us/op | 0.97 | | List(uint8) 100000 struct -> tree_backed | 1.1037 ms/op | 1.1770 ms/op | 0.94 | | List(uint8) 100000 tree_backed -> struct | 1.0894 ms/op | 1.0336 ms/op | 1.05 | | List(uint8) 100000 struct -> binary | 1.0123 ms/op | 1.0109 ms/op | 1.00 | | List(uint8) 100000 tree_backed -> binary | 85.280 us/op | 88.115 us/op | 0.97 | | List(uint64Number) 100000 binary -> struct | 1.1244 ms/op | 1.1524 ms/op | 0.98 | | List(uint64Number) 100000 binary -> tree_backed | 2.9699 ms/op | 3.1924 ms/op | 0.93 | | List(uint64Number) 100000 struct -> tree_backed | 4.4766 ms/op | 4.8520 ms/op | 0.92 | | List(uint64Number) 100000 tree_backed -> struct | 2.0376 ms/op | 2.1931 ms/op | 0.93 | | List(uint64Number) 100000 struct -> binary | 1.3266 ms/op | 1.3119 ms/op | 1.01 | | List(uint64Number) 100000 tree_backed -> binary | 824.17 us/op | 793.85 us/op | 1.04 | | List(Uint64Bigint) 100000 binary -> struct | 3.4442 ms/op | 3.3678 ms/op | 1.02 | | List(Uint64Bigint) 100000 binary -> tree_backed | 3.2063 ms/op | 3.2296 ms/op | 0.99 | | List(Uint64Bigint) 100000 struct -> tree_backed | 5.2772 ms/op | 5.3841 ms/op | 0.98 | | List(Uint64Bigint) 100000 tree_backed -> struct | 4.3566 ms/op | 4.7105 ms/op | 0.92 | | List(Uint64Bigint) 100000 struct -> binary | 2.0300 ms/op | 2.0578 ms/op | 0.99 | | List(Uint64Bigint) 100000 tree_backed -> binary | 907.79 us/op | 979.64 us/op | 0.93 | | Vector(Root) 100000 binary -> struct | 27.662 ms/op | 30.324 ms/op | 0.91 | | Vector(Root) 100000 binary -> tree_backed | 26.683 ms/op | 29.703 ms/op | 0.90 | | Vector(Root) 100000 struct -> tree_backed | 37.909 ms/op | 38.135 ms/op | 0.99 | | Vector(Root) 100000 tree_backed -> struct | 44.190 ms/op | 46.240 ms/op | 0.96 | | Vector(Root) 100000 struct -> binary | 2.5584 ms/op | 2.6250 ms/op | 0.97 | | Vector(Root) 100000 tree_backed -> binary | 8.6957 ms/op | 10.691 ms/op | 0.81 | | List(Validator) 100000 binary -> struct | 100.88 ms/op | 102.98 ms/op | 0.98 | | List(Validator) 100000 binary -> tree_backed | 268.58 ms/op | 279.62 ms/op | 0.96 | | List(Validator) 100000 struct -> tree_backed | 303.59 ms/op | 296.66 ms/op | 1.02 | | List(Validator) 100000 tree_backed -> struct | 193.39 ms/op | 197.43 ms/op | 0.98 | | List(Validator) 100000 struct -> binary | 27.380 ms/op | 26.826 ms/op | 1.02 | | List(Validator) 100000 tree_backed -> binary | 103.07 ms/op | 104.34 ms/op | 0.99 | | List(Validator-NS) 100000 binary -> struct | 100.87 ms/op | 94.167 ms/op | 1.07 | | List(Validator-NS) 100000 binary -> tree_backed | 130.46 ms/op | 141.00 ms/op | 0.93 | | List(Validator-NS) 100000 struct -> tree_backed | 167.62 ms/op | 168.48 ms/op | 0.99 | | List(Validator-NS) 100000 tree_backed -> struct | 145.54 ms/op | 149.20 ms/op | 0.98 | | List(Validator-NS) 100000 struct -> binary | 28.745 ms/op | 26.655 ms/op | 1.08 | | List(Validator-NS) 100000 tree_backed -> binary | 31.758 ms/op | 32.717 ms/op | 0.97 | | get epochStatuses - MutableVector | 98.032 us/op | 93.635 us/op | 1.05 | | get epochStatuses - ViewDU | 200.52 us/op | 200.57 us/op | 1.00 | | set epochStatuses - ListTreeView | 1.6233 ms/op | 1.5354 ms/op | 1.06 | | set epochStatuses - ListTreeView - set() | 439.97 us/op | 441.17 us/op | 1.00 | | set epochStatuses - ListTreeView - commit() | 507.38 us/op | 538.05 us/op | 0.94 | | bitstring | 634.30 ns/op | 635.19 ns/op | 1.00 | | bit mask | 13.537 ns/op | 13.676 ns/op | 0.99 | | struct - increase slot to 1000000 | 928.43 us/op | 928.86 us/op | 1.00 | | UintNumberType - increase slot to 1000000 | 19.812 ms/op | 21.683 ms/op | 0.91 | | UintBigintType - increase slot to 1000000 | 159.76 ms/op | 161.04 ms/op | 0.99 | | UintBigint8 x 100000 tree_deserialize | 4.4213 ms/op | 4.7442 ms/op | 0.93 | | UintBigint8 x 100000 tree_serialize | 1.0902 ms/op | 1.0907 ms/op | 1.00 | | UintBigint16 x 100000 tree_deserialize | 4.4427 ms/op | 4.5391 ms/op | 0.98 | | UintBigint16 x 100000 tree_serialize | 1.1485 ms/op | 1.1843 ms/op | 0.97 | | UintBigint32 x 100000 tree_deserialize | 4.6588 ms/op | 4.6366 ms/op | 1.00 | | UintBigint32 x 100000 tree_serialize | 1.1569 ms/op | 1.1905 ms/op | 0.97 | | UintBigint64 x 100000 tree_deserialize | 4.8834 ms/op | 5.3826 ms/op | 0.91 | | UintBigint64 x 100000 tree_serialize | 1.5227 ms/op | 1.5534 ms/op | 0.98 | | UintBigint8 x 100000 value_deserialize | 432.94 us/op | 434.22 us/op | 1.00 | | UintBigint8 x 100000 value_serialize | 592.73 us/op | 634.27 us/op | 0.93 | | UintBigint16 x 100000 value_deserialize | 464.41 us/op | 464.78 us/op | 1.00 | | UintBigint16 x 100000 value_serialize | 656.11 us/op | 688.48 us/op | 0.95 | | UintBigint32 x 100000 value_deserialize | 433.68 us/op | 433.48 us/op | 1.00 | | UintBigint32 x 100000 value_serialize | 629.99 us/op | 670.21 us/op | 0.94 | | UintBigint64 x 100000 value_deserialize | 510.24 us/op | 496.37 us/op | 1.03 | | UintBigint64 x 100000 value_serialize | 822.21 us/op | 827.59 us/op | 0.99 | | UintBigint8 x 100000 deserialize | 2.9688 ms/op | 3.0041 ms/op | 0.99 | | UintBigint8 x 100000 serialize | 1.4117 ms/op | 1.5764 ms/op | 0.90 | | UintBigint16 x 100000 deserialize | 3.0937 ms/op | 3.0389 ms/op | 1.02 | | UintBigint16 x 100000 serialize | 1.4550 ms/op | 1.5031 ms/op | 0.97 | | UintBigint32 x 100000 deserialize | 3.3677 ms/op | 3.0057 ms/op | 1.12 | | UintBigint32 x 100000 serialize | 2.7434 ms/op | 2.7715 ms/op | 0.99 | | UintBigint64 x 100000 deserialize | 3.8126 ms/op | 3.7695 ms/op | 1.01 | | UintBigint64 x 100000 serialize | 1.5293 ms/op | 1.5093 ms/op | 1.01 | | UintBigint128 x 100000 deserialize | 5.2353 ms/op | 5.0854 ms/op | 1.03 | | UintBigint128 x 100000 serialize | 14.375 ms/op | 14.802 ms/op | 0.97 | | UintBigint256 x 100000 deserialize | 8.1535 ms/op | 8.1395 ms/op | 1.00 | | UintBigint256 x 100000 serialize | 43.287 ms/op | 43.455 ms/op | 1.00 | | Slice from Uint8Array x25000 | 1.1184 ms/op | 1.1098 ms/op | 1.01 | | Slice from ArrayBuffer x25000 | 15.854 ms/op | 16.666 ms/op | 0.95 | | Slice from ArrayBuffer x25000 + new Uint8Array | 17.856 ms/op | 18.207 ms/op | 0.98 | | Copy Uint8Array 100000 iterate | 1.6476 ms/op | 1.6465 ms/op | 1.00 | | Copy Uint8Array 100000 slice | 114.92 us/op | 99.440 us/op | 1.16 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 115.01 us/op | 104.17 us/op | 1.10 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 110.55 us/op | 105.40 us/op | 1.05 | | Copy Uint8Array 100000 slice + set | 187.01 us/op | 183.88 us/op | 1.02 | | Copy Uint8Array 100000 subarray + set | 110.23 us/op | 104.70 us/op | 1.05 | | Copy Uint8Array 100000 slice arrayBuffer | 108.00 us/op | 106.03 us/op | 1.02 | | Uint64 deserialize 100000 - iterate Uint8Array | 1.8571 ms/op | 1.7393 ms/op | 1.07 | | Uint64 deserialize 100000 - by Uint32A | 1.8474 ms/op | 1.7731 ms/op | 1.04 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 1.8570 ms/op | 1.8211 ms/op | 1.02 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 4.9052 ms/op | 4.8452 ms/op | 1.01 | | Uint64 deserialize 100000 - by byte | 40.166 ms/op | 40.081 ms/op | 1.00 |

by benchmarkbot/action

wemeetagain commented 2 months ago

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

wemeetagain commented 2 months ago

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

wemeetagain commented 2 months ago

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