ChainSafe / ssz

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

fix: relax other instances of intersectValues #344

Closed wemeetagain closed 7 months ago

wemeetagain commented 7 months ago

Motivation

Description

github-actions[bot] commented 7 months ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: 1e3abe67930a0cf5aede5d01ba43a5029fb21064 | Previous: b618564deabcd9d268ce5e64896cfc72e8870ad2 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 48.292 ms/op | 47.612 ms/op | 1.01 | | digest64 50023 times | 49.422 ms/op | 49.282 ms/op | 1.00 | | digest 50023 times | 50.062 ms/op | 49.263 ms/op | 1.02 | | input length 32 | 1.1750 us/op | 1.1760 us/op | 1.00 | | input length 64 | 1.2770 us/op | 1.2870 us/op | 0.99 | | input length 128 | 2.2280 us/op | 2.2310 us/op | 1.00 | | input length 256 | 3.3250 us/op | 3.3110 us/op | 1.00 | | input length 512 | 5.5010 us/op | 5.4000 us/op | 1.02 | | input length 1024 | 10.891 us/op | 10.857 us/op | 1.00 | | digest 1000000 times | 800.02 ms/op | 812.74 ms/op | 0.98 | | hashObjectToByteArray 50023 times | 1.4448 ms/op | 1.4655 ms/op | 0.99 | | byteArrayToHashObject 50023 times | 1.6906 ms/op | 1.7148 ms/op | 0.99 | | getGindicesAtDepth | 4.0130 us/op | 4.0300 us/op | 1.00 | | iterateAtDepth | 9.1820 us/op | 8.4090 us/op | 1.09 | | getGindexBits | 445.00 ns/op | 401.00 ns/op | 1.11 | | gindexIterator | 953.00 ns/op | 953.00 ns/op | 1.00 | | hash 2 Uint8Array 2250026 times - as-sha256 | 2.2487 s/op | 2.2245 s/op | 1.01 | | hashTwoObjects 2250026 times - as-sha256 | 2.1488 s/op | 2.1509 s/op | 1.00 | | hash 2 Uint8Array 2250026 times - noble | 4.7801 s/op | 5.0134 s/op | 0.95 | | hashTwoObjects 2250026 times - noble | 6.8014 s/op | 6.8784 s/op | 0.99 | | getNodeH() x7812.5 avg hindex | 14.575 us/op | 14.587 us/op | 1.00 | | getNodeH() x7812.5 index 0 | 5.1460 us/op | 5.1850 us/op | 0.99 | | getNodeH() x7812.5 index 7 | 5.0860 us/op | 5.1260 us/op | 0.99 | | getNodeH() x7812.5 index 7 with key array | 5.2050 us/op | 5.0680 us/op | 1.03 | | new LeafNode() x7812.5 | 114.13 us/op | 111.93 us/op | 1.02 | | multiproof - depth 15, 1 requested leaves | 9.6250 us/op | 9.5620 us/op | 1.01 | | tree offset multiproof - depth 15, 1 requested leaves | 20.629 us/op | 20.888 us/op | 0.99 | | compact multiproof - depth 15, 1 requested leaves | 5.8170 us/op | 5.6780 us/op | 1.02 | | multiproof - depth 15, 2 requested leaves | 13.624 us/op | 13.561 us/op | 1.00 | | tree offset multiproof - depth 15, 2 requested leaves | 24.505 us/op | 23.484 us/op | 1.04 | | compact multiproof - depth 15, 2 requested leaves | 3.4600 us/op | 3.4380 us/op | 1.01 | | multiproof - depth 15, 3 requested leaves | 19.221 us/op | 18.357 us/op | 1.05 | | tree offset multiproof - depth 15, 3 requested leaves | 31.617 us/op | 31.318 us/op | 1.01 | | compact multiproof - depth 15, 3 requested leaves | 4.9180 us/op | 4.7350 us/op | 1.04 | | multiproof - depth 15, 4 requested leaves | 25.077 us/op | 24.379 us/op | 1.03 | | tree offset multiproof - depth 15, 4 requested leaves | 38.650 us/op | 38.245 us/op | 1.01 | | compact multiproof - depth 15, 4 requested leaves | 6.0180 us/op | 5.5090 us/op | 1.09 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 2.0550 us/op | 2.0230 us/op | 1.02 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 2.0370 us/op | 2.0190 us/op | 1.01 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 2.0120 us/op | 1.9870 us/op | 1.01 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 2.0400 us/op | 1.9790 us/op | 1.03 | | subtreeFillToContents depth 40 count 250000 | 44.860 ms/op | 44.877 ms/op | 1.00 | | setRoot - gindexBitstring | 8.7236 ms/op | 9.2769 ms/op | 0.94 | | setRoot - gindex | 9.7476 ms/op | 9.9059 ms/op | 0.98 | | getRoot - gindexBitstring | 2.4913 ms/op | 2.5968 ms/op | 0.96 | | getRoot - gindex | 3.3935 ms/op | 3.2107 ms/op | 1.06 | | getHashObject then setHashObject | 10.444 ms/op | 10.713 ms/op | 0.97 | | setNodeWithFn | 9.1767 ms/op | 9.5235 ms/op | 0.96 | | getNodeAtDepth depth 0 x100000 | 1.1465 ms/op | 1.1458 ms/op | 1.00 | | setNodeAtDepth depth 0 x100000 | 2.7987 ms/op | 2.7021 ms/op | 1.04 | | getNodesAtDepth depth 0 x100000 | 1.0846 ms/op | 1.0855 ms/op | 1.00 | | setNodesAtDepth depth 0 x100000 | 1.4852 ms/op | 1.4856 ms/op | 1.00 | | getNodeAtDepth depth 1 x100000 | 1.2062 ms/op | 1.2485 ms/op | 0.97 | | setNodeAtDepth depth 1 x100000 | 5.8268 ms/op | 5.9347 ms/op | 0.98 | | getNodesAtDepth depth 1 x100000 | 1.2091 ms/op | 1.2110 ms/op | 1.00 | | setNodesAtDepth depth 1 x100000 | 4.8528 ms/op | 4.8568 ms/op | 1.00 | | getNodeAtDepth depth 2 x100000 | 1.4829 ms/op | 1.5000 ms/op | 0.99 | | setNodeAtDepth depth 2 x100000 | 9.9887 ms/op | 12.132 ms/op | 0.82 | | getNodesAtDepth depth 2 x100000 | 20.551 ms/op | 20.331 ms/op | 1.01 | | setNodesAtDepth depth 2 x100000 | 13.829 ms/op | 15.797 ms/op | 0.88 | | tree.getNodesAtDepth - gindexes | 6.7565 ms/op | 6.2406 ms/op | 1.08 | | tree.getNodesAtDepth - push all nodes | 2.1947 ms/op | 2.2091 ms/op | 0.99 | | tree.getNodesAtDepth - navigation | 157.49 us/op | 160.65 us/op | 0.98 | | tree.setNodesAtDepth - indexes | 385.04 us/op | 387.00 us/op | 0.99 | | set at depth 8 | 524.00 ns/op | 521.00 ns/op | 1.01 | | set at depth 16 | 666.00 ns/op | 677.00 ns/op | 0.98 | | set at depth 32 | 1.0610 us/op | 1.0710 us/op | 0.99 | | iterateNodesAtDepth 8 256 | 14.091 us/op | 14.195 us/op | 0.99 | | getNodesAtDepth 8 256 | 3.5040 us/op | 3.4560 us/op | 1.01 | | iterateNodesAtDepth 16 65536 | 4.5954 ms/op | 4.6221 ms/op | 0.99 | | getNodesAtDepth 16 65536 | 2.0112 ms/op | 2.1251 ms/op | 0.95 | | iterateNodesAtDepth 32 250000 | 17.042 ms/op | 17.599 ms/op | 0.97 | | getNodesAtDepth 32 250000 | 4.6959 ms/op | 4.2390 ms/op | 1.11 | | iterateNodesAtDepth 40 250000 | 16.302 ms/op | 15.361 ms/op | 1.06 | | getNodesAtDepth 40 250000 | 4.3517 ms/op | 4.2633 ms/op | 1.02 | | 250k validators | 7.0353 s/op | 7.1164 s/op | 0.99 | | bitlist bytes to struct (120,90) | 571.00 ns/op | 569.00 ns/op | 1.00 | | bitlist bytes to tree (120,90) | 2.2120 us/op | 2.2990 us/op | 0.96 | | bitlist bytes to struct (2048,2048) | 970.00 ns/op | 1.0250 us/op | 0.95 | | bitlist bytes to tree (2048,2048) | 3.5970 us/op | 3.6480 us/op | 0.99 | | ByteListType - deserialize | 9.7183 ms/op | 7.8290 ms/op | 1.24 | | BasicListType - deserialize | 7.8227 ms/op | 7.7469 ms/op | 1.01 | | ByteListType - serialize | 8.8021 ms/op | 8.1315 ms/op | 1.08 | | BasicListType - serialize | 10.653 ms/op | 10.716 ms/op | 0.99 | | BasicListType - tree_convertToStruct | 21.423 ms/op | 21.691 ms/op | 0.99 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 4.2115 ms/op | 4.2758 ms/op | 0.98 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 4.1394 ms/op | 4.1334 ms/op | 1.00 | | Array.push len 300000 empty Array - number | 5.9143 ms/op | 5.6930 ms/op | 1.04 | | Array.set len 300000 from new Array - number | 1.7295 ms/op | 1.8125 ms/op | 0.95 | | Array.set len 300000 - number | 5.8029 ms/op | 5.2855 ms/op | 1.10 | | Uint8Array.set len 300000 | 212.59 us/op | 213.24 us/op | 1.00 | | Uint32Array.set len 300000 | 294.31 us/op | 296.46 us/op | 0.99 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 20.636 ms/op | 20.171 ms/op | 1.02 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 9.4900 ms/op | 9.4035 ms/op | 1.01 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 241.74 ms/op | 238.02 ms/op | 1.02 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 284.29 ms/op | 283.76 ms/op | 1.00 | | List(Container) len 300000 ViewDU.get(i) | 6.6949 ms/op | 6.5989 ms/op | 1.01 | | List(Container) len 300000 ViewDU.getReadonly(i) | 6.7481 ms/op | 6.3506 ms/op | 1.06 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 38.918 ms/op | 37.577 ms/op | 1.04 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 5.6545 ms/op | 5.0698 ms/op | 1.12 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 6.3485 ms/op | 6.0586 ms/op | 1.05 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 6.3032 ms/op | 5.9688 ms/op | 1.06 | | Array.push len 300000 empty Array - object | 5.8739 ms/op | 5.7707 ms/op | 1.02 | | Array.set len 300000 from new Array - object | 1.8778 ms/op | 1.9207 ms/op | 0.98 | | Array.set len 300000 - object | 5.4817 ms/op | 5.5494 ms/op | 0.99 | | cachePermanentRootStruct no cache | 9.1810 us/op | 8.9030 us/op | 1.03 | | cachePermanentRootStruct with cache | 225.00 ns/op | 222.00 ns/op | 1.01 | | epochParticipation len 250000 rws 7813 | 2.3355 ms/op | 2.2905 ms/op | 1.02 | | deserialize Attestation - tree | 2.9090 us/op | 2.8880 us/op | 1.01 | | deserialize Attestation - struct | 1.9870 us/op | 1.9580 us/op | 1.01 | | deserialize SignedAggregateAndProof - tree | 3.6580 us/op | 3.6400 us/op | 1.00 | | deserialize SignedAggregateAndProof - struct | 3.0110 us/op | 3.1500 us/op | 0.96 | | deserialize SyncCommitteeMessage - tree | 1.1340 us/op | 1.1010 us/op | 1.03 | | deserialize SyncCommitteeMessage - struct | 1.2180 us/op | 1.2830 us/op | 0.95 | | deserialize SignedContributionAndProof - tree | 1.9180 us/op | 2.0040 us/op | 0.96 | | deserialize SignedContributionAndProof - struct | 2.4260 us/op | 2.6760 us/op | 0.91 | | deserialize SignedBeaconBlock - tree | 213.05 us/op | 215.59 us/op | 0.99 | | deserialize SignedBeaconBlock - struct | 129.65 us/op | 134.89 us/op | 0.96 | | BeaconState vc 300000 - deserialize tree | 631.49 ms/op | 663.14 ms/op | 0.95 | | BeaconState vc 300000 - serialize tree | 113.05 ms/op | 134.01 ms/op | 0.84 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 884.00 ns/op | 812.00 ns/op | 1.09 | | BeaconState.historicalRoots vc 300000 - serialize tree | 915.00 ns/op | 804.00 ns/op | 1.14 | | BeaconState.validators vc 300000 - deserialize tree | 590.11 ms/op | 644.93 ms/op | 0.92 | | BeaconState.validators vc 300000 - serialize tree | 140.24 ms/op | 144.52 ms/op | 0.97 | | BeaconState.balances vc 300000 - deserialize tree | 24.294 ms/op | 23.727 ms/op | 1.02 | | BeaconState.balances vc 300000 - serialize tree | 3.3510 ms/op | 3.9601 ms/op | 0.85 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 435.52 us/op | 454.42 us/op | 0.96 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 265.36 us/op | 272.12 us/op | 0.98 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 413.05 us/op | 475.35 us/op | 0.87 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 263.23 us/op | 266.87 us/op | 0.99 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 25.279 ms/op | 24.210 ms/op | 1.04 | | BeaconState.inactivityScores vc 300000 - serialize tree | 3.8565 ms/op | 3.5828 ms/op | 1.08 | | hashTreeRoot Attestation - struct | 30.469 us/op | 31.780 us/op | 0.96 | | hashTreeRoot Attestation - tree | 18.420 us/op | 20.969 us/op | 0.88 | | hashTreeRoot SignedAggregateAndProof - struct | 41.163 us/op | 42.488 us/op | 0.97 | | hashTreeRoot SignedAggregateAndProof - tree | 28.686 us/op | 28.493 us/op | 1.01 | | hashTreeRoot SyncCommitteeMessage - struct | 9.8420 us/op | 10.163 us/op | 0.97 | | hashTreeRoot SyncCommitteeMessage - tree | 6.3130 us/op | 6.2080 us/op | 1.02 | | hashTreeRoot SignedContributionAndProof - struct | 27.944 us/op | 28.920 us/op | 0.97 | | hashTreeRoot SignedContributionAndProof - tree | 20.484 us/op | 20.387 us/op | 1.00 | | hashTreeRoot SignedBeaconBlock - struct | 2.4917 ms/op | 2.3990 ms/op | 1.04 | | hashTreeRoot SignedBeaconBlock - tree | 1.6857 ms/op | 1.6681 ms/op | 1.01 | | hashTreeRoot Validator - struct | 13.632 us/op | 13.158 us/op | 1.04 | | hashTreeRoot Validator - tree | 11.917 us/op | 10.744 us/op | 1.11 | | BeaconState vc 300000 - hashTreeRoot tree | 3.7114 s/op | 3.6275 s/op | 1.02 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 1.5680 us/op | 1.4070 us/op | 1.11 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 3.5044 s/op | 3.4803 s/op | 1.01 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 89.051 ms/op | 88.816 ms/op | 1.00 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 8.9669 ms/op | 9.0264 ms/op | 0.99 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 8.9780 ms/op | 9.0248 ms/op | 0.99 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 81.754 ms/op | 82.415 ms/op | 0.99 | | hash64 x18 | 19.324 us/op | 19.206 us/op | 1.01 | | hashTwoObjects x18 | 18.312 us/op | 17.883 us/op | 1.02 | | hash64 x1740 | 1.8622 ms/op | 1.8136 ms/op | 1.03 | | hashTwoObjects x1740 | 1.7001 ms/op | 1.6992 ms/op | 1.00 | | hash64 x2700000 | 2.8717 s/op | 2.8458 s/op | 1.01 | | hashTwoObjects x2700000 | 2.6523 s/op | 2.6437 s/op | 1.00 | | get_exitEpoch - ContainerType | 228.00 ns/op | 223.00 ns/op | 1.02 | | get_exitEpoch - ContainerNodeStructType | 222.00 ns/op | 211.00 ns/op | 1.05 | | set_exitEpoch - ContainerType | 243.00 ns/op | 249.00 ns/op | 0.98 | | set_exitEpoch - ContainerNodeStructType | 223.00 ns/op | 213.00 ns/op | 1.05 | | get_pubkey - ContainerType | 1.1190 us/op | 1.0310 us/op | 1.09 | | get_pubkey - ContainerNodeStructType | 237.00 ns/op | 220.00 ns/op | 1.08 | | hashTreeRoot - ContainerType | 440.00 ns/op | 386.00 ns/op | 1.14 | | hashTreeRoot - ContainerNodeStructType | 461.00 ns/op | 451.00 ns/op | 1.02 | | createProof - ContainerType | 4.2870 us/op | 4.0780 us/op | 1.05 | | createProof - ContainerNodeStructType | 23.781 us/op | 22.545 us/op | 1.05 | | serialize - ContainerType | 2.0960 us/op | 1.9390 us/op | 1.08 | | serialize - ContainerNodeStructType | 1.6360 us/op | 1.5660 us/op | 1.04 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 4.2300 us/op | 4.0870 us/op | 1.03 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 12.043 us/op | 11.297 us/op | 1.07 | | Array - for of | 5.0410 us/op | 5.4450 us/op | 0.93 | | Array - for(;;) | 4.2210 us/op | 4.6620 us/op | 0.91 | | basicListValue.readonlyValuesArray() | 3.8760 ms/op | 3.9753 ms/op | 0.98 | | basicListValue.readonlyValuesArray() + loop all | 3.9654 ms/op | 3.9408 ms/op | 1.01 | | compositeListValue.readonlyValuesArray() | 29.444 ms/op | 29.072 ms/op | 1.01 | | compositeListValue.readonlyValuesArray() + loop all | 26.099 ms/op | 25.935 ms/op | 1.01 | | Number64UintType - get balances list | 4.2248 ms/op | 4.1898 ms/op | 1.01 | | Number64UintType - set balances list | 9.4758 ms/op | 9.8827 ms/op | 0.96 | | Number64UintType - get and increase 10 then set | 39.588 ms/op | 40.714 ms/op | 0.97 | | Number64UintType - increase 10 using applyDelta | 16.023 ms/op | 16.969 ms/op | 0.94 | | Number64UintType - increase 10 using applyDeltaInBatch | 16.049 ms/op | 16.598 ms/op | 0.97 | | tree_newTreeFromUint64Deltas | 18.183 ms/op | 17.681 ms/op | 1.03 | | unsafeUint8ArrayToTree | 32.271 ms/op | 30.339 ms/op | 1.06 | | bitLength(50) | 240.00 ns/op | 225.00 ns/op | 1.07 | | bitLengthStr(50) | 248.00 ns/op | 231.00 ns/op | 1.07 | | bitLength(8000) | 231.00 ns/op | 218.00 ns/op | 1.06 | | bitLengthStr(8000) | 291.00 ns/op | 281.00 ns/op | 1.04 | | bitLength(250000) | 230.00 ns/op | 221.00 ns/op | 1.04 | | bitLengthStr(250000) | 357.00 ns/op | 312.00 ns/op | 1.14 | | floor - Math.floor (53) | 0.46569 ns/op | 0.46511 ns/op | 1.00 | | floor - << 0 (53) | 0.46483 ns/op | 0.46556 ns/op | 1.00 | | floor - Math.floor (512) | 0.46489 ns/op | 0.47048 ns/op | 0.99 | | floor - << 0 (512) | 0.47096 ns/op | 0.46387 ns/op | 1.02 | | fnIf(0) | 1.5465 ns/op | 1.5593 ns/op | 0.99 | | fnSwitch(0) | 2.4760 ns/op | 2.5068 ns/op | 0.99 | | fnObj(0) | 0.46448 ns/op | 0.46380 ns/op | 1.00 | | fnArr(0) | 0.46882 ns/op | 0.47008 ns/op | 1.00 | | fnIf(4) | 2.1651 ns/op | 2.1674 ns/op | 1.00 | | fnSwitch(4) | 2.4737 ns/op | 2.4744 ns/op | 1.00 | | fnObj(4) | 0.46532 ns/op | 0.46634 ns/op | 1.00 | | fnArr(4) | 0.46610 ns/op | 0.46501 ns/op | 1.00 | | fnIf(9) | 3.0968 ns/op | 3.1528 ns/op | 0.98 | | fnSwitch(9) | 2.4758 ns/op | 2.5086 ns/op | 0.99 | | fnObj(9) | 0.46425 ns/op | 0.46566 ns/op | 1.00 | | fnArr(9) | 0.46720 ns/op | 0.46533 ns/op | 1.00 | | Container {a,b,vec} - as struct x100000 | 46.625 us/op | 46.567 us/op | 1.00 | | Container {a,b,vec} - as tree x100000 | 371.70 us/op | 371.37 us/op | 1.00 | | Container {a,vec,b} - as struct x100000 | 77.510 us/op | 77.498 us/op | 1.00 | | Container {a,vec,b} - as tree x100000 | 402.31 us/op | 410.59 us/op | 0.98 | | get 2 props x1000000 - rawObject | 309.56 us/op | 309.93 us/op | 1.00 | | get 2 props x1000000 - proxy | 71.416 ms/op | 78.681 ms/op | 0.91 | | get 2 props x1000000 - customObj | 309.79 us/op | 309.70 us/op | 1.00 | | Simple object binary -> struct | 737.00 ns/op | 827.00 ns/op | 0.89 | | Simple object binary -> tree_backed | 1.7130 us/op | 2.2420 us/op | 0.76 | | Simple object struct -> tree_backed | 2.2020 us/op | 2.8600 us/op | 0.77 | | Simple object tree_backed -> struct | 1.9790 us/op | 2.3680 us/op | 0.84 | | Simple object struct -> binary | 966.00 ns/op | 1.1670 us/op | 0.83 | | Simple object tree_backed -> binary | 1.7370 us/op | 2.0990 us/op | 0.83 | | aggregationBits binary -> struct | 574.00 ns/op | 796.00 ns/op | 0.72 | | aggregationBits binary -> tree_backed | 2.1840 us/op | 2.4740 us/op | 0.88 | | aggregationBits struct -> tree_backed | 2.5920 us/op | 2.8750 us/op | 0.90 | | aggregationBits tree_backed -> struct | 1.1330 us/op | 1.2420 us/op | 0.91 | | aggregationBits struct -> binary | 773.00 ns/op | 860.00 ns/op | 0.90 | | aggregationBits tree_backed -> binary | 1.0030 us/op | 1.0970 us/op | 0.91 | | List(uint8) 100000 binary -> struct | 1.3497 ms/op | 1.2414 ms/op | 1.09 | | List(uint8) 100000 binary -> tree_backed | 89.645 us/op | 86.055 us/op | 1.04 | | List(uint8) 100000 struct -> tree_backed | 1.3398 ms/op | 1.3271 ms/op | 1.01 | | List(uint8) 100000 tree_backed -> struct | 962.61 us/op | 928.22 us/op | 1.04 | | List(uint8) 100000 struct -> binary | 1.3065 ms/op | 1.2140 ms/op | 1.08 | | List(uint8) 100000 tree_backed -> binary | 81.560 us/op | 85.896 us/op | 0.95 | | List(uint64Number) 100000 binary -> struct | 1.2969 ms/op | 1.2397 ms/op | 1.05 | | List(uint64Number) 100000 binary -> tree_backed | 3.7365 ms/op | 3.6978 ms/op | 1.01 | | List(uint64Number) 100000 struct -> tree_backed | 5.1741 ms/op | 5.0504 ms/op | 1.02 | | List(uint64Number) 100000 tree_backed -> struct | 2.1482 ms/op | 2.1119 ms/op | 1.02 | | List(uint64Number) 100000 struct -> binary | 1.5221 ms/op | 1.3890 ms/op | 1.10 | | List(uint64Number) 100000 tree_backed -> binary | 822.13 us/op | 744.16 us/op | 1.10 | | List(Uint64Bigint) 100000 binary -> struct | 3.5412 ms/op | 3.2103 ms/op | 1.10 | | List(Uint64Bigint) 100000 binary -> tree_backed | 3.8229 ms/op | 3.3616 ms/op | 1.14 | | List(Uint64Bigint) 100000 struct -> tree_backed | 6.0449 ms/op | 6.0119 ms/op | 1.01 | | List(Uint64Bigint) 100000 tree_backed -> struct | 4.2092 ms/op | 4.2382 ms/op | 0.99 | | List(Uint64Bigint) 100000 struct -> binary | 2.0689 ms/op | 2.0561 ms/op | 1.01 | | List(Uint64Bigint) 100000 tree_backed -> binary | 869.16 us/op | 880.28 us/op | 0.99 | | Vector(Root) 100000 binary -> struct | 38.033 ms/op | 37.587 ms/op | 1.01 | | Vector(Root) 100000 binary -> tree_backed | 32.257 ms/op | 37.347 ms/op | 0.86 | | Vector(Root) 100000 struct -> tree_backed | 41.504 ms/op | 39.141 ms/op | 1.06 | | Vector(Root) 100000 tree_backed -> struct | 48.864 ms/op | 48.030 ms/op | 1.02 | | Vector(Root) 100000 struct -> binary | 1.8667 ms/op | 1.8767 ms/op | 0.99 | | Vector(Root) 100000 tree_backed -> binary | 9.7680 ms/op | 8.4738 ms/op | 1.15 | | List(Validator) 100000 binary -> struct | 133.54 ms/op | 129.36 ms/op | 1.03 | | List(Validator) 100000 binary -> tree_backed | 342.69 ms/op | 334.47 ms/op | 1.02 | | List(Validator) 100000 struct -> tree_backed | 356.92 ms/op | 346.32 ms/op | 1.03 | | List(Validator) 100000 tree_backed -> struct | 212.75 ms/op | 215.51 ms/op | 0.99 | | List(Validator) 100000 struct -> binary | 29.993 ms/op | 30.304 ms/op | 0.99 | | List(Validator) 100000 tree_backed -> binary | 97.279 ms/op | 100.13 ms/op | 0.97 | | List(Validator-NS) 100000 binary -> struct | 121.99 ms/op | 126.42 ms/op | 0.96 | | List(Validator-NS) 100000 binary -> tree_backed | 184.34 ms/op | 176.49 ms/op | 1.04 | | List(Validator-NS) 100000 struct -> tree_backed | 216.68 ms/op | 215.56 ms/op | 1.01 | | List(Validator-NS) 100000 tree_backed -> struct | 173.35 ms/op | 180.03 ms/op | 0.96 | | List(Validator-NS) 100000 struct -> binary | 30.765 ms/op | 31.290 ms/op | 0.98 | | List(Validator-NS) 100000 tree_backed -> binary | 35.266 ms/op | 38.182 ms/op | 0.92 | | get epochStatuses - MutableVector | 93.195 us/op | 101.91 us/op | 0.91 | | get epochStatuses - ViewDU | 195.33 us/op | 197.34 us/op | 0.99 | | set epochStatuses - ListTreeView | 1.3660 ms/op | 1.3946 ms/op | 0.98 | | set epochStatuses - ListTreeView - set() | 428.01 us/op | 427.69 us/op | 1.00 | | set epochStatuses - ListTreeView - commit() | 468.46 us/op | 409.16 us/op | 1.14 | | bitstring | 644.48 ns/op | 641.73 ns/op | 1.00 | | bit mask | 13.652 ns/op | 14.009 ns/op | 0.97 | | struct - increase slot to 1000000 | 927.91 us/op | 931.48 us/op | 1.00 | | UintNumberType - increase slot to 1000000 | 28.492 ms/op | 28.512 ms/op | 1.00 | | UintBigintType - increase slot to 1000000 | 428.38 ms/op | 421.63 ms/op | 1.02 | | UintBigint8 x 100000 tree_deserialize | 3.7532 ms/op | 4.5787 ms/op | 0.82 | | UintBigint8 x 100000 tree_serialize | 1.1867 ms/op | 1.1843 ms/op | 1.00 | | UintBigint16 x 100000 tree_deserialize | 3.6247 ms/op | 4.5861 ms/op | 0.79 | | UintBigint16 x 100000 tree_serialize | 1.1425 ms/op | 1.1533 ms/op | 0.99 | | UintBigint32 x 100000 tree_deserialize | 4.7898 ms/op | 4.6960 ms/op | 1.02 | | UintBigint32 x 100000 tree_serialize | 1.2039 ms/op | 1.2113 ms/op | 0.99 | | UintBigint64 x 100000 tree_deserialize | 5.0883 ms/op | 5.4589 ms/op | 0.93 | | UintBigint64 x 100000 tree_serialize | 1.5668 ms/op | 1.5880 ms/op | 0.99 | | UintBigint8 x 100000 value_deserialize | 432.88 us/op | 432.88 us/op | 1.00 | | UintBigint8 x 100000 value_serialize | 582.97 us/op | 596.22 us/op | 0.98 | | UintBigint16 x 100000 value_deserialize | 464.03 us/op | 464.02 us/op | 1.00 | | UintBigint16 x 100000 value_serialize | 613.88 us/op | 623.97 us/op | 0.98 | | UintBigint32 x 100000 value_deserialize | 433.50 us/op | 432.95 us/op | 1.00 | | UintBigint32 x 100000 value_serialize | 615.22 us/op | 634.17 us/op | 0.97 | | UintBigint64 x 100000 value_deserialize | 464.98 us/op | 465.43 us/op | 1.00 | | UintBigint64 x 100000 value_serialize | 797.45 us/op | 816.84 us/op | 0.98 | | UintBigint8 x 100000 deserialize | 4.6353 ms/op | 4.5242 ms/op | 1.02 | | UintBigint8 x 100000 serialize | 1.3962 ms/op | 1.4565 ms/op | 0.96 | | UintBigint16 x 100000 deserialize | 4.7813 ms/op | 4.6700 ms/op | 1.02 | | UintBigint16 x 100000 serialize | 1.4284 ms/op | 1.5142 ms/op | 0.94 | | UintBigint32 x 100000 deserialize | 5.4571 ms/op | 5.3763 ms/op | 1.02 | | UintBigint32 x 100000 serialize | 2.7857 ms/op | 2.7367 ms/op | 1.02 | | UintBigint64 x 100000 deserialize | 3.8882 ms/op | 3.8752 ms/op | 1.00 | | UintBigint64 x 100000 serialize | 1.4886 ms/op | 1.4656 ms/op | 1.02 | | UintBigint128 x 100000 deserialize | 5.9300 ms/op | 5.8200 ms/op | 1.02 | | UintBigint128 x 100000 serialize | 17.921 ms/op | 17.985 ms/op | 1.00 | | UintBigint256 x 100000 deserialize | 11.140 ms/op | 10.842 ms/op | 1.03 | | UintBigint256 x 100000 serialize | 52.875 ms/op | 51.641 ms/op | 1.02 | | Slice from Uint8Array x25000 | 1.0279 ms/op | 1.0127 ms/op | 1.02 | | Slice from ArrayBuffer x25000 | 16.767 ms/op | 16.460 ms/op | 1.02 | | Slice from ArrayBuffer x25000 + new Uint8Array | 18.966 ms/op | 18.414 ms/op | 1.03 | | Copy Uint8Array 100000 iterate | 815.45 us/op | 810.82 us/op | 1.01 | | Copy Uint8Array 100000 slice | 86.956 us/op | 85.124 us/op | 1.02 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 88.534 us/op | 84.760 us/op | 1.04 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 87.918 us/op | 84.994 us/op | 1.03 | | Copy Uint8Array 100000 slice + set | 162.67 us/op | 144.55 us/op | 1.13 | | Copy Uint8Array 100000 subarray + set | 88.152 us/op | 85.174 us/op | 1.03 | | Copy Uint8Array 100000 slice arrayBuffer | 87.957 us/op | 85.403 us/op | 1.03 | | Uint64 deserialize 100000 - iterate Uint8Array | 1.8215 ms/op | 1.7106 ms/op | 1.06 | | Uint64 deserialize 100000 - by Uint32A | 1.8549 ms/op | 1.7307 ms/op | 1.07 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 1.8132 ms/op | 1.7345 ms/op | 1.05 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 5.0137 ms/op | 4.8010 ms/op | 1.04 | | Uint64 deserialize 100000 - by byte | 43.299 ms/op | 43.056 ms/op | 1.01 |

by benchmarkbot/action