ChainSafe / ssz

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

chore: bump node version in GitHub workflows #372

Closed ensi321 closed 2 months ago

ensi321 commented 2 months ago

Use node20 and setup-node v4 in GitHub workflows as recommended here

This should fix CI errors when attempting to run yarn using node16. See error log

github-actions[bot] commented 2 months ago

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 4c0ee3386bf48dee44109319b965dc2e092d088b Previous: d7191b8ca974c08a6212f0b859ceaa0d9bf91a83 Ratio
new LeafNode() x7812.5 14.787 us/op 196.06 us/op 0.08
Full benchmark results | Benchmark suite | Current: 4c0ee3386bf48dee44109319b965dc2e092d088b | Previous: d7191b8ca974c08a6212f0b859ceaa0d9bf91a83 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 47.810 ms/op | 47.886 ms/op | 1.00 | | digest64 50023 times | 49.565 ms/op | 49.990 ms/op | 0.99 | | digest 50023 times | 51.485 ms/op | 53.310 ms/op | 0.97 | | input length 32 | 1.1820 us/op | 1.4250 us/op | 0.83 | | input length 64 | 1.3510 us/op | 1.5750 us/op | 0.86 | | input length 128 | 2.2690 us/op | 2.5030 us/op | 0.91 | | input length 256 | 3.3950 us/op | 3.6120 us/op | 0.94 | | input length 512 | 5.5690 us/op | 5.8320 us/op | 0.95 | | input length 1024 | 10.770 us/op | 11.144 us/op | 0.97 | | digest 1000000 times | 798.69 ms/op | 832.82 ms/op | 0.96 | | hashObjectToByteArray 50023 times | 1.4293 ms/op | 1.4249 ms/op | 1.00 | | byteArrayToHashObject 50023 times | 2.5032 ms/op | 3.5406 ms/op | 0.71 | | getGindicesAtDepth | 4.6470 us/op | 5.0250 us/op | 0.92 | | iterateAtDepth | 7.5370 us/op | 10.126 us/op | 0.74 | | getGindexBits | 439.00 ns/op | 538.00 ns/op | 0.82 | | gindexIterator | 1000.0 ns/op | 1.2020 us/op | 0.83 | | hash 2 Uint8Array 2250026 times - as-sha256 | 2.2956 s/op | 2.3193 s/op | 0.99 | | hashTwoObjects 2250026 times - as-sha256 | 2.2172 s/op | 2.2329 s/op | 0.99 | | hash 2 Uint8Array 2250026 times - noble | 4.9931 s/op | 6.0164 s/op | 0.83 | | hashTwoObjects 2250026 times - noble | 6.4618 s/op | 6.9520 s/op | 0.93 | | getNodeH() x7812.5 avg hindex | 12.685 us/op | 15.617 us/op | 0.81 | | getNodeH() x7812.5 index 0 | 6.4390 us/op | 5.1580 us/op | 1.25 | | getNodeH() x7812.5 index 7 | 6.3480 us/op | 5.1250 us/op | 1.24 | | getNodeH() x7812.5 index 7 with key array | 6.3980 us/op | 5.2030 us/op | 1.23 | | new LeafNode() x7812.5 | 14.787 us/op | 196.06 us/op | 0.08 | | multiproof - depth 15, 1 requested leaves | 9.3260 us/op | 10.337 us/op | 0.90 | | tree offset multiproof - depth 15, 1 requested leaves | 19.985 us/op | 20.629 us/op | 0.97 | | compact multiproof - depth 15, 1 requested leaves | 5.1660 us/op | 5.4510 us/op | 0.95 | | multiproof - depth 15, 2 requested leaves | 12.897 us/op | 13.569 us/op | 0.95 | | tree offset multiproof - depth 15, 2 requested leaves | 23.064 us/op | 24.482 us/op | 0.94 | | compact multiproof - depth 15, 2 requested leaves | 4.2890 us/op | 3.3270 us/op | 1.29 | | multiproof - depth 15, 3 requested leaves | 17.772 us/op | 18.761 us/op | 0.95 | | tree offset multiproof - depth 15, 3 requested leaves | 29.927 us/op | 31.822 us/op | 0.94 | | compact multiproof - depth 15, 3 requested leaves | 6.4110 us/op | 5.5330 us/op | 1.16 | | multiproof - depth 15, 4 requested leaves | 22.727 us/op | 24.656 us/op | 0.92 | | tree offset multiproof - depth 15, 4 requested leaves | 34.310 us/op | 39.102 us/op | 0.88 | | compact multiproof - depth 15, 4 requested leaves | 5.1740 us/op | 5.4100 us/op | 0.96 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 1.9880 us/op | 1.9940 us/op | 1.00 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 1.9720 us/op | 1.9860 us/op | 0.99 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 1.9830 us/op | 1.9790 us/op | 1.00 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 1.9780 us/op | 1.9860 us/op | 1.00 | | subtreeFillToContents depth 40 count 250000 | 46.585 ms/op | 47.466 ms/op | 0.98 | | setRoot - gindexBitstring | 8.7531 ms/op | 9.1755 ms/op | 0.95 | | setRoot - gindex | 8.9414 ms/op | 9.7307 ms/op | 0.92 | | getRoot - gindexBitstring | 2.5554 ms/op | 2.4145 ms/op | 1.06 | | getRoot - gindex | 3.1925 ms/op | 3.1756 ms/op | 1.01 | | getHashObject then setHashObject | 10.090 ms/op | 10.632 ms/op | 0.95 | | setNodeWithFn | 7.8419 ms/op | 9.3400 ms/op | 0.84 | | getNodeAtDepth depth 0 x100000 | 1.0826 ms/op | 1.1700 ms/op | 0.93 | | setNodeAtDepth depth 0 x100000 | 2.3305 ms/op | 2.7642 ms/op | 0.84 | | getNodesAtDepth depth 0 x100000 | 1.0521 ms/op | 1.0841 ms/op | 0.97 | | setNodesAtDepth depth 0 x100000 | 1.4345 ms/op | 1.4874 ms/op | 0.96 | | getNodeAtDepth depth 1 x100000 | 1.1444 ms/op | 1.2343 ms/op | 0.93 | | setNodeAtDepth depth 1 x100000 | 5.1034 ms/op | 5.9648 ms/op | 0.86 | | getNodesAtDepth depth 1 x100000 | 1.1769 ms/op | 1.2084 ms/op | 0.97 | | setNodesAtDepth depth 1 x100000 | 4.3143 ms/op | 6.0912 ms/op | 0.71 | | getNodeAtDepth depth 2 x100000 | 1.4230 ms/op | 1.4848 ms/op | 0.96 | | setNodeAtDepth depth 2 x100000 | 8.8153 ms/op | 10.058 ms/op | 0.88 | | getNodesAtDepth depth 2 x100000 | 18.459 ms/op | 20.438 ms/op | 0.90 | | setNodesAtDepth depth 2 x100000 | 12.465 ms/op | 14.112 ms/op | 0.88 | | tree.getNodesAtDepth - gindexes | 7.7773 ms/op | 7.5169 ms/op | 1.03 | | tree.getNodesAtDepth - push all nodes | 1.9151 ms/op | 2.2665 ms/op | 0.84 | | tree.getNodesAtDepth - navigation | 232.34 us/op | 157.90 us/op | 1.47 | | tree.setNodesAtDepth - indexes | 358.56 us/op | 389.96 us/op | 0.92 | | set at depth 8 | 460.00 ns/op | 622.00 ns/op | 0.74 | | set at depth 16 | 595.00 ns/op | 707.00 ns/op | 0.84 | | set at depth 32 | 948.00 ns/op | 1.0920 us/op | 0.87 | | iterateNodesAtDepth 8 256 | 13.184 us/op | 14.225 us/op | 0.93 | | getNodesAtDepth 8 256 | 3.3900 us/op | 3.5750 us/op | 0.95 | | iterateNodesAtDepth 16 65536 | 4.3011 ms/op | 4.6538 ms/op | 0.92 | | getNodesAtDepth 16 65536 | 1.5827 ms/op | 2.0332 ms/op | 0.78 | | iterateNodesAtDepth 32 250000 | 15.188 ms/op | 16.961 ms/op | 0.90 | | getNodesAtDepth 32 250000 | 4.3462 ms/op | 4.7969 ms/op | 0.91 | | iterateNodesAtDepth 40 250000 | 15.088 ms/op | 16.909 ms/op | 0.89 | | getNodesAtDepth 40 250000 | 4.3600 ms/op | 4.7079 ms/op | 0.93 | | 250k validators | 7.0011 s/op | 7.7870 s/op | 0.90 | | bitlist bytes to struct (120,90) | 515.00 ns/op | 814.00 ns/op | 0.63 | | bitlist bytes to tree (120,90) | 2.1780 us/op | 2.4590 us/op | 0.89 | | bitlist bytes to struct (2048,2048) | 933.00 ns/op | 1.0840 us/op | 0.86 | | bitlist bytes to tree (2048,2048) | 3.3450 us/op | 3.8720 us/op | 0.86 | | ByteListType - deserialize | 7.5733 ms/op | 7.5503 ms/op | 1.00 | | BasicListType - deserialize | 12.015 ms/op | 10.070 ms/op | 1.19 | | ByteListType - serialize | 7.4557 ms/op | 7.6534 ms/op | 0.97 | | BasicListType - serialize | 9.8123 ms/op | 10.754 ms/op | 0.91 | | BasicListType - tree_convertToStruct | 22.414 ms/op | 24.923 ms/op | 0.90 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 4.3385 ms/op | 4.1160 ms/op | 1.05 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 2.7797 ms/op | 4.1212 ms/op | 0.67 | | Array.push len 300000 empty Array - number | 6.2597 ms/op | 6.3867 ms/op | 0.98 | | Array.set len 300000 from new Array - number | 1.6663 ms/op | 1.7237 ms/op | 0.97 | | Array.set len 300000 - number | 5.2488 ms/op | 5.3869 ms/op | 0.97 | | Uint8Array.set len 300000 | 371.28 us/op | 216.26 us/op | 1.72 | | Uint32Array.set len 300000 | 435.57 us/op | 310.00 us/op | 1.41 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 46.637 ms/op | 20.526 ms/op | 2.27 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 10.924 ms/op | 9.3895 ms/op | 1.16 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 208.17 ms/op | 205.57 ms/op | 1.01 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 257.06 ms/op | 269.11 ms/op | 0.96 | | List(Container) len 300000 ViewDU.get(i) | 6.3088 ms/op | 6.6708 ms/op | 0.95 | | List(Container) len 300000 ViewDU.getReadonly(i) | 6.1202 ms/op | 6.6290 ms/op | 0.92 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 39.014 ms/op | 36.783 ms/op | 1.06 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 5.5163 ms/op | 5.3122 ms/op | 1.04 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 5.8975 ms/op | 6.1704 ms/op | 0.96 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 5.8706 ms/op | 6.0321 ms/op | 0.97 | | Array.push len 300000 empty Array - object | 6.0631 ms/op | 5.9902 ms/op | 1.01 | | Array.set len 300000 from new Array - object | 2.1942 ms/op | 2.0365 ms/op | 1.08 | | Array.set len 300000 - object | 5.8698 ms/op | 6.1522 ms/op | 0.95 | | cachePermanentRootStruct no cache | 8.5820 us/op | 9.1410 us/op | 0.94 | | cachePermanentRootStruct with cache | 203.00 ns/op | 236.00 ns/op | 0.86 | | epochParticipation len 250000 rws 7813 | 2.2212 ms/op | 2.3681 ms/op | 0.94 | | deserialize Attestation - tree | 4.1600 us/op | 3.0250 us/op | 1.38 | | deserialize Attestation - struct | 1.8140 us/op | 2.0330 us/op | 0.89 | | deserialize SignedAggregateAndProof - tree | 3.7270 us/op | 3.7690 us/op | 0.99 | | deserialize SignedAggregateAndProof - struct | 2.9430 us/op | 3.1060 us/op | 0.95 | | deserialize SyncCommitteeMessage - tree | 1.0860 us/op | 1.1530 us/op | 0.94 | | deserialize SyncCommitteeMessage - struct | 1.1270 us/op | 1.2390 us/op | 0.91 | | deserialize SignedContributionAndProof - tree | 2.0590 us/op | 2.0200 us/op | 1.02 | | deserialize SignedContributionAndProof - struct | 2.2810 us/op | 2.5410 us/op | 0.90 | | deserialize SignedBeaconBlock - tree | 211.65 us/op | 218.01 us/op | 0.97 | | deserialize SignedBeaconBlock - struct | 118.88 us/op | 131.57 us/op | 0.90 | | BeaconState vc 300000 - deserialize tree | 553.04 ms/op | 560.85 ms/op | 0.99 | | BeaconState vc 300000 - serialize tree | 121.68 ms/op | 138.89 ms/op | 0.88 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 753.00 ns/op | 849.00 ns/op | 0.89 | | BeaconState.historicalRoots vc 300000 - serialize tree | 648.00 ns/op | 664.00 ns/op | 0.98 | | BeaconState.validators vc 300000 - deserialize tree | 517.11 ms/op | 546.40 ms/op | 0.95 | | BeaconState.validators vc 300000 - serialize tree | 95.565 ms/op | 100.67 ms/op | 0.95 | | BeaconState.balances vc 300000 - deserialize tree | 18.184 ms/op | 17.174 ms/op | 1.06 | | BeaconState.balances vc 300000 - serialize tree | 3.5991 ms/op | 3.0579 ms/op | 1.18 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 446.31 us/op | 367.59 us/op | 1.21 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 268.80 us/op | 276.70 us/op | 0.97 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 461.76 us/op | 368.46 us/op | 1.25 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 284.36 us/op | 271.47 us/op | 1.05 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 20.985 ms/op | 21.489 ms/op | 0.98 | | BeaconState.inactivityScores vc 300000 - serialize tree | 3.8481 ms/op | 2.5703 ms/op | 1.50 | | hashTreeRoot Attestation - struct | 27.136 us/op | 26.814 us/op | 1.01 | | hashTreeRoot Attestation - tree | 17.951 us/op | 18.460 us/op | 0.97 | | hashTreeRoot SignedAggregateAndProof - struct | 37.243 us/op | 38.330 us/op | 0.97 | | hashTreeRoot SignedAggregateAndProof - tree | 27.238 us/op | 27.860 us/op | 0.98 | | hashTreeRoot SyncCommitteeMessage - struct | 8.9390 us/op | 9.1000 us/op | 0.98 | | hashTreeRoot SyncCommitteeMessage - tree | 6.3630 us/op | 6.4290 us/op | 0.99 | | hashTreeRoot SignedContributionAndProof - struct | 24.309 us/op | 25.959 us/op | 0.94 | | hashTreeRoot SignedContributionAndProof - tree | 19.324 us/op | 19.717 us/op | 0.98 | | hashTreeRoot SignedBeaconBlock - struct | 2.1792 ms/op | 2.3192 ms/op | 0.94 | | hashTreeRoot SignedBeaconBlock - tree | 1.6961 ms/op | 1.6849 ms/op | 1.01 | | hashTreeRoot Validator - struct | 11.711 us/op | 12.719 us/op | 0.92 | | hashTreeRoot Validator - tree | 10.309 us/op | 10.909 us/op | 0.94 | | BeaconState vc 300000 - hashTreeRoot tree | 3.5246 s/op | 3.6104 s/op | 0.98 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 1.3040 us/op | 1.4290 us/op | 0.91 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 3.3710 s/op | 3.4445 s/op | 0.98 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 84.773 ms/op | 85.030 ms/op | 1.00 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 9.1998 ms/op | 9.0571 ms/op | 1.02 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 9.0516 ms/op | 9.0534 ms/op | 1.00 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 82.606 ms/op | 88.596 ms/op | 0.93 | | hash64 x18 | 18.614 us/op | 19.772 us/op | 0.94 | | hashTwoObjects x18 | 17.598 us/op | 17.922 us/op | 0.98 | | hash64 x1740 | 1.7547 ms/op | 1.8284 ms/op | 0.96 | | hashTwoObjects x1740 | 1.6800 ms/op | 1.7140 ms/op | 0.98 | | hash64 x2700000 | 2.7392 s/op | 2.8519 s/op | 0.96 | | hashTwoObjects x2700000 | 2.6170 s/op | 2.6560 s/op | 0.99 | | get_exitEpoch - ContainerType | 188.00 ns/op | 210.00 ns/op | 0.90 | | get_exitEpoch - ContainerNodeStructType | 187.00 ns/op | 210.00 ns/op | 0.89 | | set_exitEpoch - ContainerType | 211.00 ns/op | 237.00 ns/op | 0.89 | | set_exitEpoch - ContainerNodeStructType | 198.00 ns/op | 215.00 ns/op | 0.92 | | get_pubkey - ContainerType | 961.00 ns/op | 1.0250 us/op | 0.94 | | get_pubkey - ContainerNodeStructType | 196.00 ns/op | 205.00 ns/op | 0.96 | | hashTreeRoot - ContainerType | 330.00 ns/op | 383.00 ns/op | 0.86 | | hashTreeRoot - ContainerNodeStructType | 378.00 ns/op | 420.00 ns/op | 0.90 | | createProof - ContainerType | 3.6000 us/op | 4.0400 us/op | 0.89 | | createProof - ContainerNodeStructType | 19.288 us/op | 21.782 us/op | 0.89 | | serialize - ContainerType | 1.6410 us/op | 1.7210 us/op | 0.95 | | serialize - ContainerNodeStructType | 1.3240 us/op | 1.5070 us/op | 0.88 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 3.9500 us/op | 4.2100 us/op | 0.94 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 10.902 us/op | 11.363 us/op | 0.96 | | Array - for of | 5.5160 us/op | 8.1760 us/op | 0.67 | | Array - for(;;) | 5.4260 us/op | 7.1290 us/op | 0.76 | | basicListValue.readonlyValuesArray() | 3.7808 ms/op | 3.9598 ms/op | 0.95 | | basicListValue.readonlyValuesArray() + loop all | 3.9990 ms/op | 3.9055 ms/op | 1.02 | | compositeListValue.readonlyValuesArray() | 26.681 ms/op | 27.427 ms/op | 0.97 | | compositeListValue.readonlyValuesArray() + loop all | 28.934 ms/op | 23.793 ms/op | 1.22 | | Number64UintType - get balances list | 2.1437 ms/op | 4.1407 ms/op | 0.52 | | Number64UintType - set balances list | 9.5491 ms/op | 11.102 ms/op | 0.86 | | Number64UintType - get and increase 10 then set | 32.677 ms/op | 40.869 ms/op | 0.80 | | Number64UintType - increase 10 using applyDelta | 13.317 ms/op | 16.686 ms/op | 0.80 | | Number64UintType - increase 10 using applyDeltaInBatch | 13.292 ms/op | 16.901 ms/op | 0.79 | | tree_newTreeFromUint64Deltas | 16.101 ms/op | 15.831 ms/op | 1.02 | | unsafeUint8ArrayToTree | 25.973 ms/op | 29.594 ms/op | 0.88 | | bitLength(50) | 221.00 ns/op | 228.00 ns/op | 0.97 | | bitLengthStr(50) | 209.00 ns/op | 246.00 ns/op | 0.85 | | bitLength(8000) | 211.00 ns/op | 226.00 ns/op | 0.93 | | bitLengthStr(8000) | 256.00 ns/op | 292.00 ns/op | 0.88 | | bitLength(250000) | 215.00 ns/op | 228.00 ns/op | 0.94 | | bitLengthStr(250000) | 289.00 ns/op | 322.00 ns/op | 0.90 | | floor - Math.floor (53) | 1.2372 ns/op | 0.46599 ns/op | 2.65 | | floor - << 0 (53) | 1.2519 ns/op | 0.46460 ns/op | 2.69 | | floor - Math.floor (512) | 1.2369 ns/op | 0.46434 ns/op | 2.66 | | floor - << 0 (512) | 1.2393 ns/op | 0.46516 ns/op | 2.66 | | fnIf(0) | 1.5469 ns/op | 1.5477 ns/op | 1.00 | | fnSwitch(0) | 2.1650 ns/op | 2.4843 ns/op | 0.87 | | fnObj(0) | 1.5730 ns/op | 0.46509 ns/op | 3.38 | | fnArr(0) | 1.5465 ns/op | 0.46511 ns/op | 3.32 | | fnIf(4) | 2.1934 ns/op | 2.1645 ns/op | 1.01 | | fnSwitch(4) | 2.1649 ns/op | 2.4816 ns/op | 0.87 | | fnObj(4) | 1.5524 ns/op | 0.46390 ns/op | 3.35 | | fnArr(4) | 1.5478 ns/op | 0.46552 ns/op | 3.32 | | fnIf(9) | 3.0941 ns/op | 3.0982 ns/op | 1.00 | | fnSwitch(9) | 2.1644 ns/op | 2.4740 ns/op | 0.87 | | fnObj(9) | 1.5545 ns/op | 0.46420 ns/op | 3.35 | | fnArr(9) | 1.5504 ns/op | 0.46570 ns/op | 3.33 | | Container {a,b,vec} - as struct x100000 | 123.93 us/op | 46.639 us/op | 2.66 | | Container {a,b,vec} - as tree x100000 | 340.81 us/op | 377.59 us/op | 0.90 | | Container {a,vec,b} - as struct x100000 | 154.93 us/op | 77.624 us/op | 2.00 | | Container {a,vec,b} - as tree x100000 | 371.32 us/op | 402.20 us/op | 0.92 | | get 2 props x1000000 - rawObject | 309.61 us/op | 309.96 us/op | 1.00 | | get 2 props x1000000 - proxy | 72.728 ms/op | 88.811 ms/op | 0.82 | | get 2 props x1000000 - customObj | 310.81 us/op | 309.56 us/op | 1.00 | | Simple object binary -> struct | 804.00 ns/op | 880.00 ns/op | 0.91 | | Simple object binary -> tree_backed | 1.5660 us/op | 2.4590 us/op | 0.64 | | Simple object struct -> tree_backed | 2.1950 us/op | 3.1400 us/op | 0.70 | | Simple object tree_backed -> struct | 2.1520 us/op | 2.4700 us/op | 0.87 | | Simple object struct -> binary | 1.1570 us/op | 1.2440 us/op | 0.93 | | Simple object tree_backed -> binary | 1.6430 us/op | 2.1360 us/op | 0.77 | | aggregationBits binary -> struct | 606.00 ns/op | 883.00 ns/op | 0.69 | | aggregationBits binary -> tree_backed | 2.3540 us/op | 2.7290 us/op | 0.86 | | aggregationBits struct -> tree_backed | 2.7590 us/op | 3.1830 us/op | 0.87 | | aggregationBits tree_backed -> struct | 1.1800 us/op | 1.3260 us/op | 0.89 | | aggregationBits struct -> binary | 811.00 ns/op | 905.00 ns/op | 0.90 | | aggregationBits tree_backed -> binary | 1.0510 us/op | 1.1030 us/op | 0.95 | | List(uint8) 100000 binary -> struct | 1.2766 ms/op | 1.3321 ms/op | 0.96 | | List(uint8) 100000 binary -> tree_backed | 83.588 us/op | 88.172 us/op | 0.95 | | List(uint8) 100000 struct -> tree_backed | 1.1058 ms/op | 1.3248 ms/op | 0.83 | | List(uint8) 100000 tree_backed -> struct | 962.23 us/op | 917.12 us/op | 1.05 | | List(uint8) 100000 struct -> binary | 995.54 us/op | 1.2295 ms/op | 0.81 | | List(uint8) 100000 tree_backed -> binary | 87.831 us/op | 82.972 us/op | 1.06 | | List(uint64Number) 100000 binary -> struct | 1.1314 ms/op | 1.2204 ms/op | 0.93 | | List(uint64Number) 100000 binary -> tree_backed | 2.9222 ms/op | 3.1955 ms/op | 0.91 | | List(uint64Number) 100000 struct -> tree_backed | 4.3559 ms/op | 4.6614 ms/op | 0.93 | | List(uint64Number) 100000 tree_backed -> struct | 2.0915 ms/op | 2.0947 ms/op | 1.00 | | List(uint64Number) 100000 struct -> binary | 1.3443 ms/op | 1.4316 ms/op | 0.94 | | List(uint64Number) 100000 tree_backed -> binary | 854.19 us/op | 809.14 us/op | 1.06 | | List(Uint64Bigint) 100000 binary -> struct | 3.7163 ms/op | 3.3674 ms/op | 1.10 | | List(Uint64Bigint) 100000 binary -> tree_backed | 2.8728 ms/op | 2.9971 ms/op | 0.96 | | List(Uint64Bigint) 100000 struct -> tree_backed | 5.2249 ms/op | 5.1206 ms/op | 1.02 | | List(Uint64Bigint) 100000 tree_backed -> struct | 4.3239 ms/op | 4.4615 ms/op | 0.97 | | List(Uint64Bigint) 100000 struct -> binary | 2.0411 ms/op | 2.0405 ms/op | 1.00 | | List(Uint64Bigint) 100000 tree_backed -> binary | 916.98 us/op | 811.48 us/op | 1.13 | | Vector(Root) 100000 binary -> struct | 28.551 ms/op | 28.394 ms/op | 1.01 | | Vector(Root) 100000 binary -> tree_backed | 28.781 ms/op | 32.532 ms/op | 0.88 | | Vector(Root) 100000 struct -> tree_backed | 35.616 ms/op | 35.697 ms/op | 1.00 | | Vector(Root) 100000 tree_backed -> struct | 43.270 ms/op | 43.923 ms/op | 0.99 | | Vector(Root) 100000 struct -> binary | 2.5498 ms/op | 1.8683 ms/op | 1.36 | | Vector(Root) 100000 tree_backed -> binary | 8.4514 ms/op | 9.9326 ms/op | 0.85 | | List(Validator) 100000 binary -> struct | 92.828 ms/op | 101.98 ms/op | 0.91 | | List(Validator) 100000 binary -> tree_backed | 253.60 ms/op | 282.34 ms/op | 0.90 | | List(Validator) 100000 struct -> tree_backed | 287.97 ms/op | 292.96 ms/op | 0.98 | | List(Validator) 100000 tree_backed -> struct | 188.53 ms/op | 199.31 ms/op | 0.95 | | List(Validator) 100000 struct -> binary | 28.027 ms/op | 30.643 ms/op | 0.91 | | List(Validator) 100000 tree_backed -> binary | 100.05 ms/op | 98.934 ms/op | 1.01 | | List(Validator-NS) 100000 binary -> struct | 90.165 ms/op | 102.31 ms/op | 0.88 | | List(Validator-NS) 100000 binary -> tree_backed | 127.50 ms/op | 156.57 ms/op | 0.81 | | List(Validator-NS) 100000 struct -> tree_backed | 169.62 ms/op | 191.76 ms/op | 0.88 | | List(Validator-NS) 100000 tree_backed -> struct | 141.60 ms/op | 154.29 ms/op | 0.92 | | List(Validator-NS) 100000 struct -> binary | 28.043 ms/op | 31.075 ms/op | 0.90 | | List(Validator-NS) 100000 tree_backed -> binary | 31.421 ms/op | 35.971 ms/op | 0.87 | | get epochStatuses - MutableVector | 92.560 us/op | 94.825 us/op | 0.98 | | get epochStatuses - ViewDU | 182.15 us/op | 203.21 us/op | 0.90 | | set epochStatuses - ListTreeView | 1.4021 ms/op | 1.3908 ms/op | 1.01 | | set epochStatuses - ListTreeView - set() | 454.69 us/op | 433.07 us/op | 1.05 | | set epochStatuses - ListTreeView - commit() | 439.14 us/op | 416.37 us/op | 1.05 | | bitstring | 636.36 ns/op | 647.69 ns/op | 0.98 | | bit mask | 13.900 ns/op | 13.699 ns/op | 1.01 | | struct - increase slot to 1000000 | 929.27 us/op | 927.60 us/op | 1.00 | | UintNumberType - increase slot to 1000000 | 28.871 ms/op | 28.524 ms/op | 1.01 | | UintBigintType - increase slot to 1000000 | 157.96 ms/op | 445.10 ms/op | 0.35 | | UintBigint8 x 100000 tree_deserialize | 4.5121 ms/op | 5.5845 ms/op | 0.81 | | UintBigint8 x 100000 tree_serialize | 536.75 us/op | 1.1846 ms/op | 0.45 | | UintBigint16 x 100000 tree_deserialize | 4.5938 ms/op | 5.6496 ms/op | 0.81 | | UintBigint16 x 100000 tree_serialize | 602.53 us/op | 1.2357 ms/op | 0.49 | | UintBigint32 x 100000 tree_deserialize | 4.7233 ms/op | 5.7431 ms/op | 0.82 | | UintBigint32 x 100000 tree_serialize | 623.19 us/op | 1.2368 ms/op | 0.50 | | UintBigint64 x 100000 tree_deserialize | 5.3176 ms/op | 6.4471 ms/op | 0.82 | | UintBigint64 x 100000 tree_serialize | 1.4321 ms/op | 1.6473 ms/op | 0.87 | | UintBigint8 x 100000 value_deserialize | 433.04 us/op | 433.38 us/op | 1.00 | | UintBigint8 x 100000 value_serialize | 775.14 us/op | 614.63 us/op | 1.26 | | UintBigint16 x 100000 value_deserialize | 464.71 us/op | 463.93 us/op | 1.00 | | UintBigint16 x 100000 value_serialize | 840.52 us/op | 651.98 us/op | 1.29 | | UintBigint32 x 100000 value_deserialize | 433.21 us/op | 433.19 us/op | 1.00 | | UintBigint32 x 100000 value_serialize | 818.78 us/op | 652.73 us/op | 1.25 | | UintBigint64 x 100000 value_deserialize | 497.11 us/op | 465.05 us/op | 1.07 | | UintBigint64 x 100000 value_serialize | 990.19 us/op | 822.77 us/op | 1.20 | | UintBigint8 x 100000 deserialize | 2.9459 ms/op | 4.7750 ms/op | 0.62 | | UintBigint8 x 100000 serialize | 1.5318 ms/op | 1.4649 ms/op | 1.05 | | UintBigint16 x 100000 deserialize | 2.9351 ms/op | 4.7399 ms/op | 0.62 | | UintBigint16 x 100000 serialize | 1.5076 ms/op | 1.5099 ms/op | 1.00 | | UintBigint32 x 100000 deserialize | 2.9384 ms/op | 5.5632 ms/op | 0.53 | | UintBigint32 x 100000 serialize | 2.7160 ms/op | 2.8412 ms/op | 0.96 | | UintBigint64 x 100000 deserialize | 3.6665 ms/op | 3.8645 ms/op | 0.95 | | UintBigint64 x 100000 serialize | 1.4977 ms/op | 1.4908 ms/op | 1.00 | | UintBigint128 x 100000 deserialize | 4.8635 ms/op | 5.9020 ms/op | 0.82 | | UintBigint128 x 100000 serialize | 14.213 ms/op | 16.932 ms/op | 0.84 | | UintBigint256 x 100000 deserialize | 7.6410 ms/op | 10.994 ms/op | 0.70 | | UintBigint256 x 100000 serialize | 41.359 ms/op | 50.243 ms/op | 0.82 | | Slice from Uint8Array x25000 | 1.1081 ms/op | 1.0019 ms/op | 1.11 | | Slice from ArrayBuffer x25000 | 15.724 ms/op | 16.878 ms/op | 0.93 | | Slice from ArrayBuffer x25000 + new Uint8Array | 14.963 ms/op | 19.369 ms/op | 0.77 | | Copy Uint8Array 100000 iterate | 1.6475 ms/op | 825.74 us/op | 2.00 | | Copy Uint8Array 100000 slice | 123.74 us/op | 91.124 us/op | 1.36 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 125.81 us/op | 92.262 us/op | 1.36 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 125.90 us/op | 91.656 us/op | 1.37 | | Copy Uint8Array 100000 slice + set | 199.84 us/op | 149.16 us/op | 1.34 | | Copy Uint8Array 100000 subarray + set | 124.77 us/op | 92.838 us/op | 1.34 | | Copy Uint8Array 100000 slice arrayBuffer | 125.20 us/op | 91.937 us/op | 1.36 | | Uint64 deserialize 100000 - iterate Uint8Array | 1.7169 ms/op | 1.7640 ms/op | 0.97 | | Uint64 deserialize 100000 - by Uint32A | 1.7627 ms/op | 1.6971 ms/op | 1.04 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 1.7708 ms/op | 1.6968 ms/op | 1.04 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 4.7065 ms/op | 4.8651 ms/op | 0.97 | | Uint64 deserialize 100000 - by byte | 40.153 ms/op | 65.100 ms/op | 0.62 |

by benchmarkbot/action