ChainSafe / ssz

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

fix: show errors during serialization/deserialization as popup #323

Closed nflaig closed 1 year ago

nflaig commented 1 year ago

Motivation

Closes https://github.com/ChainSafe/ssz/issues/322

Description

Easiest solution I found with high confidence of not breaking something.

It will now also show a error popup instead of just logging to console, the errors are quite technical and might not be that helpful sometimes but at least a user gets notified that something is not right.

image

github-actions[bot] commented 1 year ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: 061970116db1395ddcb469b0532499fe7b66e8dd | Previous: 46dee18f3cd21d1b6d594778a0dd1db8a984c812 | Ratio | |-|-|-|-| | digestTwoHashObjects 50023 times | 69.168 ms/op | 73.482 ms/op | 0.94 | | digest64 50023 times | 72.258 ms/op | 72.690 ms/op | 0.99 | | digest 50023 times | 72.244 ms/op | 71.981 ms/op | 1.00 | | input length 32 | 1.7770 us/op | 1.7910 us/op | 0.99 | | input length 64 | 1.9540 us/op | 1.9380 us/op | 1.01 | | input length 128 | 3.3560 us/op | 3.3650 us/op | 1.00 | | input length 256 | 4.9270 us/op | 5.0020 us/op | 0.99 | | input length 512 | 8.2020 us/op | 8.1290 us/op | 1.01 | | input length 1024 | 16.130 us/op | 16.154 us/op | 1.00 | | digest 1000000 times | 1.3094 s/op | 1.2377 s/op | 1.06 | | hashObjectToByteArray 50023 times | 2.8772 ms/op | 2.8553 ms/op | 1.01 | | byteArrayToHashObject 50023 times | 3.1809 ms/op | 3.5048 ms/op | 0.91 | | getGindicesAtDepth | 7.3090 us/op | 7.5140 us/op | 0.97 | | iterateAtDepth | 15.229 us/op | 15.101 us/op | 1.01 | | getGindexBits | 723.00 ns/op | 692.00 ns/op | 1.04 | | gindexIterator | 1.5850 us/op | 1.5750 us/op | 1.01 | | hash 2 Uint8Array 2250026 times - as-sha256 | 3.2783 s/op | 3.2676 s/op | 1.00 | | hashTwoObjects 2250026 times - as-sha256 | 3.1440 s/op | 3.1457 s/op | 1.00 | | hash 2 Uint8Array 2250026 times - noble | 10.130 s/op | 11.157 s/op | 0.91 | | hashTwoObjects 2250026 times - noble | 12.145 s/op | 14.060 s/op | 0.86 | | getNodeH() x7812.5 avg hindex | 28.872 us/op | 29.553 us/op | 0.98 | | getNodeH() x7812.5 index 0 | 10.130 us/op | 10.521 us/op | 0.96 | | getNodeH() x7812.5 index 7 | 10.200 us/op | 10.496 us/op | 0.97 | | getNodeH() x7812.5 index 7 with key array | 10.181 us/op | 10.582 us/op | 0.96 | | new LeafNode() x7812.5 | 343.35 us/op | 357.00 us/op | 0.96 | | multiproof - depth 15, 1 requested leaves | 16.996 us/op | 18.819 us/op | 0.90 | | tree offset multiproof - depth 15, 1 requested leaves | 37.383 us/op | 41.209 us/op | 0.91 | | compact multiproof - depth 15, 1 requested leaves | 9.2600 us/op | 10.233 us/op | 0.90 | | multiproof - depth 15, 2 requested leaves | 22.594 us/op | 24.520 us/op | 0.92 | | tree offset multiproof - depth 15, 2 requested leaves | 39.847 us/op | 42.086 us/op | 0.95 | | compact multiproof - depth 15, 2 requested leaves | 5.5780 us/op | 5.5980 us/op | 1.00 | | multiproof - depth 15, 3 requested leaves | 31.450 us/op | 37.057 us/op | 0.85 | | tree offset multiproof - depth 15, 3 requested leaves | 52.584 us/op | 57.983 us/op | 0.91 | | compact multiproof - depth 15, 3 requested leaves | 9.4570 us/op | 11.342 us/op | 0.83 | | multiproof - depth 15, 4 requested leaves | 41.288 us/op | 46.399 us/op | 0.89 | | tree offset multiproof - depth 15, 4 requested leaves | 64.962 us/op | 70.028 us/op | 0.93 | | compact multiproof - depth 15, 4 requested leaves | 10.532 us/op | 11.737 us/op | 0.90 | | packedRootsBytesToLeafNodes bytes 4000 offset 0 | 5.0250 us/op | 4.2180 us/op | 1.19 | | packedRootsBytesToLeafNodes bytes 4000 offset 1 | 3.9690 us/op | 4.2700 us/op | 0.93 | | packedRootsBytesToLeafNodes bytes 4000 offset 2 | 3.8740 us/op | 4.3860 us/op | 0.88 | | packedRootsBytesToLeafNodes bytes 4000 offset 3 | 3.8540 us/op | 4.3410 us/op | 0.89 | | subtreeFillToContents depth 40 count 250000 | 94.566 ms/op | 102.98 ms/op | 0.92 | | setRoot - gindexBitstring | 14.719 ms/op | 17.151 ms/op | 0.86 | | setRoot - gindex | 15.324 ms/op | 19.465 ms/op | 0.79 | | getRoot - gindexBitstring | 4.1405 ms/op | 4.6513 ms/op | 0.89 | | getRoot - gindex | 4.9711 ms/op | 5.5455 ms/op | 0.90 | | getHashObject then setHashObject | 17.603 ms/op | 19.217 ms/op | 0.92 | | setNodeWithFn | 15.356 ms/op | 20.222 ms/op | 0.76 | | getNodeAtDepth depth 0 x100000 | 2.7397 ms/op | 2.7657 ms/op | 0.99 | | setNodeAtDepth depth 0 x100000 | 4.7075 ms/op | 5.2287 ms/op | 0.90 | | getNodesAtDepth depth 0 x100000 | 2.1886 ms/op | 2.1662 ms/op | 1.01 | | setNodesAtDepth depth 0 x100000 | 3.0608 ms/op | 3.0780 ms/op | 0.99 | | getNodeAtDepth depth 1 x100000 | 2.7879 ms/op | 2.8524 ms/op | 0.98 | | setNodeAtDepth depth 1 x100000 | 10.855 ms/op | 11.121 ms/op | 0.98 | | getNodesAtDepth depth 1 x100000 | 2.4302 ms/op | 2.4207 ms/op | 1.00 | | setNodesAtDepth depth 1 x100000 | 8.6153 ms/op | 10.356 ms/op | 0.83 | | getNodeAtDepth depth 2 x100000 | 3.3396 ms/op | 3.3520 ms/op | 1.00 | | setNodeAtDepth depth 2 x100000 | 17.471 ms/op | 18.902 ms/op | 0.92 | | getNodesAtDepth depth 2 x100000 | 32.659 ms/op | 33.032 ms/op | 0.99 | | setNodesAtDepth depth 2 x100000 | 23.514 ms/op | 24.027 ms/op | 0.98 | | tree.getNodesAtDepth - gindexes | 9.6860 ms/op | 10.088 ms/op | 0.96 | | tree.getNodesAtDepth - push all nodes | 3.0147 ms/op | 3.1162 ms/op | 0.97 | | tree.getNodesAtDepth - navigation | 201.76 us/op | 201.72 us/op | 1.00 | | tree.setNodesAtDepth - indexes | 632.98 us/op | 674.69 us/op | 0.94 | | set at depth 8 | 781.00 ns/op | 843.00 ns/op | 0.93 | | set at depth 16 | 1.0270 us/op | 1.0980 us/op | 0.94 | | set at depth 32 | 1.6340 us/op | 1.7810 us/op | 0.92 | | iterateNodesAtDepth 8 256 | 26.108 us/op | 27.831 us/op | 0.94 | | getNodesAtDepth 8 256 | 6.8060 us/op | 6.9560 us/op | 0.98 | | iterateNodesAtDepth 16 65536 | 7.9555 ms/op | 7.9510 ms/op | 1.00 | | getNodesAtDepth 16 65536 | 2.8093 ms/op | 3.0644 ms/op | 0.92 | | iterateNodesAtDepth 32 250000 | 29.395 ms/op | 29.789 ms/op | 0.99 | | getNodesAtDepth 32 250000 | 8.0787 ms/op | 9.1581 ms/op | 0.88 | | iterateNodesAtDepth 40 250000 | 29.502 ms/op | 29.687 ms/op | 0.99 | | getNodesAtDepth 40 250000 | 8.1479 ms/op | 9.6536 ms/op | 0.84 | | 250k validators | 11.825 s/op | 13.968 s/op | 0.85 | | bitlist bytes to struct (120,90) | 849.00 ns/op | 1.2060 us/op | 0.70 | | bitlist bytes to tree (120,90) | 3.9060 us/op | 4.7990 us/op | 0.81 | | bitlist bytes to struct (2048,2048) | 1.9060 us/op | 2.4480 us/op | 0.78 | | bitlist bytes to tree (2048,2048) | 6.6040 us/op | 9.1290 us/op | 0.72 | | ByteListType - deserialize | 19.646 ms/op | 21.784 ms/op | 0.90 | | BasicListType - deserialize | 16.459 ms/op | 22.098 ms/op | 0.74 | | ByteListType - serialize | 18.916 ms/op | 23.220 ms/op | 0.81 | | BasicListType - serialize | 19.538 ms/op | 26.676 ms/op | 0.73 | | BasicListType - tree_convertToStruct | 56.513 ms/op | 51.976 ms/op | 1.09 | | List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate | 6.2877 ms/op | 7.3430 ms/op | 0.86 | | List[uint8, 68719476736] len 300000 ViewDU.get(i) | 6.9498 ms/op | 7.5966 ms/op | 0.91 | | Array.push len 300000 empty Array - number | 9.6426 ms/op | 10.728 ms/op | 0.90 | | Array.set len 300000 from new Array - number | 2.5992 ms/op | 3.2418 ms/op | 0.80 | | Array.set len 300000 - number | 9.5465 ms/op | 10.523 ms/op | 0.91 | | Uint8Array.set len 300000 | 319.37 us/op | 332.64 us/op | 0.96 | | Uint32Array.set len 300000 | 424.86 us/op | 483.37 us/op | 0.88 | | Container({a: uint8, b: uint8}) getViewDU x300000 | 98.266 ms/op | 41.927 ms/op | 2.34 | | ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 | 21.257 ms/op | 15.398 ms/op | 1.38 | | List(Container) len 300000 ViewDU.getAllReadonly() + iterate | 629.08 ms/op | 678.96 ms/op | 0.93 | | List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate | 538.66 ms/op | 551.05 ms/op | 0.98 | | List(Container) len 300000 ViewDU.get(i) | 12.428 ms/op | 15.504 ms/op | 0.80 | | List(Container) len 300000 ViewDU.getReadonly(i) | 11.807 ms/op | 12.579 ms/op | 0.94 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate | 76.686 ms/op | 68.769 ms/op | 1.12 | | List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate | 9.7727 ms/op | 10.332 ms/op | 0.95 | | List(ContainerNodeStruct) len 300000 ViewDU.get(i) | 10.818 ms/op | 11.703 ms/op | 0.92 | | List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) | 10.329 ms/op | 12.848 ms/op | 0.80 | | Array.push len 300000 empty Array - object | 9.7187 ms/op | 10.053 ms/op | 0.97 | | Array.set len 300000 from new Array - object | 3.4268 ms/op | 4.3041 ms/op | 0.80 | | Array.set len 300000 - object | 9.7944 ms/op | 10.066 ms/op | 0.97 | | cachePermanentRootStruct no cache | 14.280 us/op | 14.533 us/op | 0.98 | | cachePermanentRootStruct with cache | 357.00 ns/op | 360.00 ns/op | 0.99 | | epochParticipation len 250000 rws 7813 | 3.8004 ms/op | 3.8767 ms/op | 0.98 | | deserialize Attestation - tree | 5.1150 us/op | 5.9050 us/op | 0.87 | | deserialize Attestation - struct | 3.4920 us/op | 3.7310 us/op | 0.94 | | deserialize SignedAggregateAndProof - tree | 6.5410 us/op | 7.0570 us/op | 0.93 | | deserialize SignedAggregateAndProof - struct | 5.4560 us/op | 5.7200 us/op | 0.95 | | deserialize SyncCommitteeMessage - tree | 1.8180 us/op | 1.7340 us/op | 1.05 | | deserialize SyncCommitteeMessage - struct | 2.1050 us/op | 2.1860 us/op | 0.96 | | deserialize SignedContributionAndProof - tree | 3.6110 us/op | 3.4630 us/op | 1.04 | | deserialize SignedContributionAndProof - struct | 4.5560 us/op | 5.1350 us/op | 0.89 | | deserialize SignedBeaconBlock - tree | 368.52 us/op | 418.62 us/op | 0.88 | | deserialize SignedBeaconBlock - struct | 242.61 us/op | 280.47 us/op | 0.87 | | BeaconState vc 300000 - deserialize tree | 1.0660 s/op | 1.1493 s/op | 0.93 | | BeaconState vc 300000 - serialize tree | 358.57 ms/op | 342.28 ms/op | 1.05 | | BeaconState.historicalRoots vc 300000 - deserialize tree | 1.2960 us/op | 1.5100 us/op | 0.86 | | BeaconState.historicalRoots vc 300000 - serialize tree | 1.3760 us/op | 1.5100 us/op | 0.91 | | BeaconState.validators vc 300000 - deserialize tree | 1.1105 s/op | 1.1530 s/op | 0.96 | | BeaconState.validators vc 300000 - serialize tree | 296.08 ms/op | 317.07 ms/op | 0.93 | | BeaconState.balances vc 300000 - deserialize tree | 41.555 ms/op | 47.503 ms/op | 0.87 | | BeaconState.balances vc 300000 - serialize tree | 6.8881 ms/op | 7.2469 ms/op | 0.95 | | BeaconState.previousEpochParticipation vc 300000 - deserialize tree | 840.92 us/op | 937.08 us/op | 0.90 | | BeaconState.previousEpochParticipation vc 300000 - serialize tree | 542.09 us/op | 533.73 us/op | 1.02 | | BeaconState.currentEpochParticipation vc 300000 - deserialize tree | 769.78 us/op | 844.09 us/op | 0.91 | | BeaconState.currentEpochParticipation vc 300000 - serialize tree | 532.44 us/op | 532.50 us/op | 1.00 | | BeaconState.inactivityScores vc 300000 - deserialize tree | 49.959 ms/op | 47.766 ms/op | 1.05 | | BeaconState.inactivityScores vc 300000 - serialize tree | 5.6853 ms/op | 7.1206 ms/op | 0.80 | | hashTreeRoot Attestation - struct | 43.619 us/op | 56.563 us/op | 0.77 | | hashTreeRoot Attestation - tree | 26.578 us/op | 31.263 us/op | 0.85 | | hashTreeRoot SignedAggregateAndProof - struct | 60.661 us/op | 81.687 us/op | 0.74 | | hashTreeRoot SignedAggregateAndProof - tree | 41.676 us/op | 42.560 us/op | 0.98 | | hashTreeRoot SyncCommitteeMessage - struct | 14.285 us/op | 18.580 us/op | 0.77 | | hashTreeRoot SyncCommitteeMessage - tree | 9.7860 us/op | 9.1570 us/op | 1.07 | | hashTreeRoot SignedContributionAndProof - struct | 40.388 us/op | 47.550 us/op | 0.85 | | hashTreeRoot SignedContributionAndProof - tree | 27.423 us/op | 30.342 us/op | 0.90 | | hashTreeRoot SignedBeaconBlock - struct | 3.5924 ms/op | 4.1959 ms/op | 0.86 | | hashTreeRoot SignedBeaconBlock - tree | 2.4350 ms/op | 2.4335 ms/op | 1.00 | | hashTreeRoot Validator - struct | 19.764 us/op | 21.146 us/op | 0.93 | | hashTreeRoot Validator - tree | 16.495 us/op | 16.970 us/op | 0.97 | | BeaconState vc 300000 - hashTreeRoot tree | 5.2968 s/op | 5.3988 s/op | 0.98 | | BeaconState.historicalRoots vc 300000 - hashTreeRoot tree | 2.1500 us/op | 2.2020 us/op | 0.98 | | BeaconState.validators vc 300000 - hashTreeRoot tree | 5.1326 s/op | 5.1575 s/op | 1.00 | | BeaconState.balances vc 300000 - hashTreeRoot tree | 133.30 ms/op | 125.35 ms/op | 1.06 | | BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree | 13.291 ms/op | 13.299 ms/op | 1.00 | | BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree | 13.295 ms/op | 13.272 ms/op | 1.00 | | BeaconState.inactivityScores vc 300000 - hashTreeRoot tree | 133.34 ms/op | 137.80 ms/op | 0.97 | | hash64 x18 | 29.151 us/op | 31.263 us/op | 0.93 | | hashTwoObjects x18 | 26.425 us/op | 26.801 us/op | 0.99 | | hash64 x1740 | 2.7595 ms/op | 2.7682 ms/op | 1.00 | | hashTwoObjects x1740 | 2.4972 ms/op | 2.4813 ms/op | 1.01 | | hash64 x2700000 | 4.2598 s/op | 4.2523 s/op | 1.00 | | hashTwoObjects x2700000 | 3.8833 s/op | 3.8516 s/op | 1.01 | | get_exitEpoch - ContainerType | 560.00 ns/op | 692.00 ns/op | 0.81 | | get_exitEpoch - ContainerNodeStructType | 469.00 ns/op | 567.00 ns/op | 0.83 | | set_exitEpoch - ContainerType | 518.00 ns/op | 631.00 ns/op | 0.82 | | set_exitEpoch - ContainerNodeStructType | 362.00 ns/op | 605.00 ns/op | 0.60 | | get_pubkey - ContainerType | 1.7660 us/op | 2.3260 us/op | 0.76 | | get_pubkey - ContainerNodeStructType | 351.00 ns/op | 623.00 ns/op | 0.56 | | hashTreeRoot - ContainerType | 613.00 ns/op | 705.00 ns/op | 0.87 | | hashTreeRoot - ContainerNodeStructType | 672.00 ns/op | 805.00 ns/op | 0.83 | | createProof - ContainerType | 7.3400 us/op | 7.6340 us/op | 0.96 | | createProof - ContainerNodeStructType | 39.685 us/op | 40.718 us/op | 0.97 | | serialize - ContainerType | 3.3650 us/op | 3.6450 us/op | 0.92 | | serialize - ContainerNodeStructType | 2.6070 us/op | 3.0200 us/op | 0.86 | | set_exitEpoch_and_hashTreeRoot - ContainerType | 6.4070 us/op | 6.4940 us/op | 0.99 | | set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType | 17.669 us/op | 18.087 us/op | 0.98 | | Array - for of | 12.713 us/op | 12.575 us/op | 1.01 | | Array - for(;;) | 8.7020 us/op | 8.6510 us/op | 1.01 | | basicListValue.readonlyValuesArray() | 6.2502 ms/op | 7.4797 ms/op | 0.84 | | basicListValue.readonlyValuesArray() + loop all | 6.5112 ms/op | 7.4129 ms/op | 0.88 | | compositeListValue.readonlyValuesArray() | 43.574 ms/op | 48.187 ms/op | 0.90 | | compositeListValue.readonlyValuesArray() + loop all | 36.996 ms/op | 43.811 ms/op | 0.84 | | Number64UintType - get balances list | 7.4170 ms/op | 7.1981 ms/op | 1.03 | | Number64UintType - set balances list | 15.142 ms/op | 16.994 ms/op | 0.89 | | Number64UintType - get and increase 10 then set | 73.022 ms/op | 68.026 ms/op | 1.07 | | Number64UintType - increase 10 using applyDelta | 28.081 ms/op | 29.042 ms/op | 0.97 | | Number64UintType - increase 10 using applyDeltaInBatch | 28.086 ms/op | 29.292 ms/op | 0.96 | | tree_newTreeFromUint64Deltas | 29.495 ms/op | 32.063 ms/op | 0.92 | | unsafeUint8ArrayToTree | 53.253 ms/op | 58.601 ms/op | 0.91 | | bitLength(50) | 356.00 ns/op | 406.00 ns/op | 0.88 | | bitLengthStr(50) | 426.00 ns/op | 468.00 ns/op | 0.91 | | bitLength(8000) | 355.00 ns/op | 377.00 ns/op | 0.94 | | bitLengthStr(8000) | 595.00 ns/op | 597.00 ns/op | 1.00 | | bitLength(250000) | 355.00 ns/op | 369.00 ns/op | 0.96 | | bitLengthStr(250000) | 695.00 ns/op | 708.00 ns/op | 0.98 | | floor - Math.floor (53) | 0.80399 ns/op | 0.79967 ns/op | 1.01 | | floor - << 0 (53) | 0.80380 ns/op | 0.80415 ns/op | 1.00 | | floor - Math.floor (512) | 0.80375 ns/op | 0.80413 ns/op | 1.00 | | floor - << 0 (512) | 0.80402 ns/op | 0.80355 ns/op | 1.00 | | fnIf(0) | 3.2134 ns/op | 3.1851 ns/op | 1.01 | | fnSwitch(0) | 6.0241 ns/op | 6.0183 ns/op | 1.00 | | fnObj(0) | 0.80370 ns/op | 0.80432 ns/op | 1.00 | | fnArr(0) | 0.80374 ns/op | 0.80405 ns/op | 1.00 | | fnIf(4) | 5.2221 ns/op | 5.2224 ns/op | 1.00 | | fnSwitch(4) | 6.0247 ns/op | 6.0304 ns/op | 1.00 | | fnObj(4) | 0.80388 ns/op | 0.80351 ns/op | 1.00 | | fnArr(4) | 0.80378 ns/op | 0.79949 ns/op | 1.01 | | fnIf(9) | 8.0333 ns/op | 8.0197 ns/op | 1.00 | | fnSwitch(9) | 6.0294 ns/op | 6.0324 ns/op | 1.00 | | fnObj(9) | 0.80386 ns/op | 0.80415 ns/op | 1.00 | | fnArr(9) | 0.80371 ns/op | 0.80070 ns/op | 1.00 | | Container {a,b,vec} - as struct x100000 | 80.784 us/op | 80.829 us/op | 1.00 | | Container {a,b,vec} - as tree x100000 | 1.0045 ms/op | 999.88 us/op | 1.00 | | Container {a,vec,b} - as struct x100000 | 121.03 us/op | 121.02 us/op | 1.00 | | Container {a,vec,b} - as tree x100000 | 1.0848 ms/op | 1.0847 ms/op | 1.00 | | get 2 props x1000000 - rawObject | 402.23 us/op | 394.08 us/op | 1.02 | | get 2 props x1000000 - proxy | 162.84 ms/op | 160.16 ms/op | 1.02 | | get 2 props x1000000 - customObj | 402.20 us/op | 402.27 us/op | 1.00 | | Simple object binary -> struct | 1.0930 us/op | 1.4450 us/op | 0.76 | | Simple object binary -> tree_backed | 3.4110 us/op | 4.0300 us/op | 0.85 | | Simple object struct -> tree_backed | 4.2770 us/op | 5.1090 us/op | 0.84 | | Simple object tree_backed -> struct | 3.5910 us/op | 4.3010 us/op | 0.83 | | Simple object struct -> binary | 1.7380 us/op | 2.3550 us/op | 0.74 | | Simple object tree_backed -> binary | 2.9770 us/op | 3.7980 us/op | 0.78 | | aggregationBits binary -> struct | 1.0450 us/op | 1.3540 us/op | 0.77 | | aggregationBits binary -> tree_backed | 4.1920 us/op | 5.4510 us/op | 0.77 | | aggregationBits struct -> tree_backed | 5.2460 us/op | 5.6340 us/op | 0.93 | | aggregationBits tree_backed -> struct | 2.0600 us/op | 2.1750 us/op | 0.95 | | aggregationBits struct -> binary | 1.4930 us/op | 1.6730 us/op | 0.89 | | aggregationBits tree_backed -> binary | 1.8700 us/op | 1.9360 us/op | 0.97 | | List(uint8) 100000 binary -> struct | 2.2762 ms/op | 2.7000 ms/op | 0.84 | | List(uint8) 100000 binary -> tree_backed | 171.08 us/op | 185.88 us/op | 0.92 | | List(uint8) 100000 struct -> tree_backed | 2.4573 ms/op | 2.4798 ms/op | 0.99 | | List(uint8) 100000 tree_backed -> struct | 1.7705 ms/op | 1.9649 ms/op | 0.90 | | List(uint8) 100000 struct -> binary | 2.2911 ms/op | 2.4895 ms/op | 0.92 | | List(uint8) 100000 tree_backed -> binary | 166.68 us/op | 172.06 us/op | 0.97 | | List(uint64Number) 100000 binary -> struct | 1.9075 ms/op | 1.9545 ms/op | 0.98 | | List(uint64Number) 100000 binary -> tree_backed | 5.5788 ms/op | 6.0137 ms/op | 0.93 | | List(uint64Number) 100000 struct -> tree_backed | 8.0233 ms/op | 8.5942 ms/op | 0.93 | | List(uint64Number) 100000 tree_backed -> struct | 3.5077 ms/op | 3.6811 ms/op | 0.95 | | List(uint64Number) 100000 struct -> binary | 2.6225 ms/op | 2.7027 ms/op | 0.97 | | List(uint64Number) 100000 tree_backed -> binary | 1.6890 ms/op | 2.0917 ms/op | 0.81 | | List(Uint64Bigint) 100000 binary -> struct | 6.1038 ms/op | 6.3737 ms/op | 0.96 | | List(Uint64Bigint) 100000 binary -> tree_backed | 6.1583 ms/op | 6.6982 ms/op | 0.92 | | List(Uint64Bigint) 100000 struct -> tree_backed | 10.476 ms/op | 9.6897 ms/op | 1.08 | | List(Uint64Bigint) 100000 tree_backed -> struct | 7.7781 ms/op | 7.8762 ms/op | 0.99 | | List(Uint64Bigint) 100000 struct -> binary | 3.5105 ms/op | 3.4994 ms/op | 1.00 | | List(Uint64Bigint) 100000 tree_backed -> binary | 1.7376 ms/op | 1.8124 ms/op | 0.96 | | Vector(Root) 100000 binary -> struct | 61.068 ms/op | 63.816 ms/op | 0.96 | | Vector(Root) 100000 binary -> tree_backed | 64.861 ms/op | 69.267 ms/op | 0.94 | | Vector(Root) 100000 struct -> tree_backed | 74.120 ms/op | 77.996 ms/op | 0.95 | | Vector(Root) 100000 tree_backed -> struct | 84.817 ms/op | 91.153 ms/op | 0.93 | | Vector(Root) 100000 struct -> binary | 3.7856 ms/op | 3.8784 ms/op | 0.98 | | Vector(Root) 100000 tree_backed -> binary | 15.614 ms/op | 16.427 ms/op | 0.95 | | List(Validator) 100000 binary -> struct | 229.19 ms/op | 241.93 ms/op | 0.95 | | List(Validator) 100000 binary -> tree_backed | 568.04 ms/op | 606.28 ms/op | 0.94 | | List(Validator) 100000 struct -> tree_backed | 620.55 ms/op | 650.81 ms/op | 0.95 | | List(Validator) 100000 tree_backed -> struct | 369.07 ms/op | 380.97 ms/op | 0.97 | | List(Validator) 100000 struct -> binary | 56.431 ms/op | 56.705 ms/op | 1.00 | | List(Validator) 100000 tree_backed -> binary | 161.32 ms/op | 162.83 ms/op | 0.99 | | List(Validator-NS) 100000 binary -> struct | 234.70 ms/op | 247.78 ms/op | 0.95 | | List(Validator-NS) 100000 binary -> tree_backed | 307.58 ms/op | 319.31 ms/op | 0.96 | | List(Validator-NS) 100000 struct -> tree_backed | 387.53 ms/op | 394.86 ms/op | 0.98 | | List(Validator-NS) 100000 tree_backed -> struct | 320.94 ms/op | 333.16 ms/op | 0.96 | | List(Validator-NS) 100000 struct -> binary | 56.123 ms/op | 59.253 ms/op | 0.95 | | List(Validator-NS) 100000 tree_backed -> binary | 63.911 ms/op | 68.489 ms/op | 0.93 | | get epochStatuses - MutableVector | 142.24 us/op | 142.22 us/op | 1.00 | | get epochStatuses - ViewDU | 337.48 us/op | 325.62 us/op | 1.04 | | set epochStatuses - ListTreeView | 2.5334 ms/op | 2.4569 ms/op | 1.03 | | set epochStatuses - ListTreeView - set() | 739.66 us/op | 726.72 us/op | 1.02 | | set epochStatuses - ListTreeView - commit() | 805.56 us/op | 769.04 us/op | 1.05 | | bitstring | 895.97 ns/op | 894.61 ns/op | 1.00 | | bit mask | 15.360 ns/op | 15.300 ns/op | 1.00 | | struct - increase slot to 1000000 | 2.6245 ms/op | 2.6193 ms/op | 1.00 | | UintNumberType - increase slot to 1000000 | 57.812 ms/op | 57.420 ms/op | 1.01 | | UintBigintType - increase slot to 1000000 | 708.71 ms/op | 737.63 ms/op | 0.96 | | UintBigint8 x 100000 tree_deserialize | 7.2334 ms/op | 14.803 ms/op | 0.49 | | UintBigint8 x 100000 tree_serialize | 2.4331 ms/op | 2.4166 ms/op | 1.01 | | UintBigint16 x 100000 tree_deserialize | 6.7470 ms/op | 6.9733 ms/op | 0.97 | | UintBigint16 x 100000 tree_serialize | 2.6066 ms/op | 2.6234 ms/op | 0.99 | | UintBigint32 x 100000 tree_deserialize | 7.9080 ms/op | 9.3372 ms/op | 0.85 | | UintBigint32 x 100000 tree_serialize | 2.2811 ms/op | 2.4554 ms/op | 0.93 | | UintBigint64 x 100000 tree_deserialize | 8.4958 ms/op | 9.5181 ms/op | 0.89 | | UintBigint64 x 100000 tree_serialize | 3.0517 ms/op | 3.1102 ms/op | 0.98 | | UintBigint8 x 100000 value_deserialize | 1.0448 ms/op | 1.0455 ms/op | 1.00 | | UintBigint8 x 100000 value_serialize | 1.4089 ms/op | 1.3712 ms/op | 1.03 | | UintBigint16 x 100000 value_deserialize | 1.1195 ms/op | 1.1230 ms/op | 1.00 | | UintBigint16 x 100000 value_serialize | 1.5501 ms/op | 1.4747 ms/op | 1.05 | | UintBigint32 x 100000 value_deserialize | 1.0096 ms/op | 1.0043 ms/op | 1.01 | | UintBigint32 x 100000 value_serialize | 1.5284 ms/op | 1.6030 ms/op | 0.95 | | UintBigint64 x 100000 value_deserialize | 1.0952 ms/op | 1.0838 ms/op | 1.01 | | UintBigint64 x 100000 value_serialize | 1.8367 ms/op | 1.8786 ms/op | 0.98 | | UintBigint8 x 100000 deserialize | 8.6493 ms/op | 8.4172 ms/op | 1.03 | | UintBigint8 x 100000 serialize | 3.0520 ms/op | 3.1502 ms/op | 0.97 | | UintBigint16 x 100000 deserialize | 7.8456 ms/op | 8.6463 ms/op | 0.91 | | UintBigint16 x 100000 serialize | 3.0798 ms/op | 3.4129 ms/op | 0.90 | | UintBigint32 x 100000 deserialize | 9.5254 ms/op | 9.3981 ms/op | 1.01 | | UintBigint32 x 100000 serialize | 5.1828 ms/op | 5.2683 ms/op | 0.98 | | UintBigint64 x 100000 deserialize | 6.1926 ms/op | 6.1009 ms/op | 1.02 | | UintBigint64 x 100000 serialize | 2.8866 ms/op | 2.9283 ms/op | 0.99 | | UintBigint128 x 100000 deserialize | 10.213 ms/op | 9.8771 ms/op | 1.03 | | UintBigint128 x 100000 serialize | 33.098 ms/op | 32.815 ms/op | 1.01 | | UintBigint256 x 100000 deserialize | 19.262 ms/op | 18.242 ms/op | 1.06 | | UintBigint256 x 100000 serialize | 98.873 ms/op | 98.541 ms/op | 1.00 | | Slice from Uint8Array x25000 | 1.8839 ms/op | 1.9105 ms/op | 0.99 | | Slice from ArrayBuffer x25000 | 33.372 ms/op | 34.187 ms/op | 0.98 | | Slice from ArrayBuffer x25000 + new Uint8Array | 36.385 ms/op | 37.211 ms/op | 0.98 | | Copy Uint8Array 100000 iterate | 1.7594 ms/op | 1.7642 ms/op | 1.00 | | Copy Uint8Array 100000 slice | 294.86 us/op | 185.33 us/op | 1.59 | | Copy Uint8Array 100000 Uint8Array.prototype.slice.call | 298.15 us/op | 156.99 us/op | 1.90 | | Copy Buffer 100000 Uint8Array.prototype.slice.call | 335.51 us/op | 159.32 us/op | 2.11 | | Copy Uint8Array 100000 slice + set | 624.75 us/op | 433.38 us/op | 1.44 | | Copy Uint8Array 100000 subarray + set | 377.16 us/op | 185.01 us/op | 2.04 | | Copy Uint8Array 100000 slice arrayBuffer | 299.50 us/op | 177.11 us/op | 1.69 | | Uint64 deserialize 100000 - iterate Uint8Array | 2.5898 ms/op | 2.6777 ms/op | 0.97 | | Uint64 deserialize 100000 - by Uint32A | 2.3502 ms/op | 2.5292 ms/op | 0.93 | | Uint64 deserialize 100000 - by DataView.getUint32 x2 | 2.4431 ms/op | 2.7389 ms/op | 0.89 | | Uint64 deserialize 100000 - by DataView.getBigUint64 | 7.8402 ms/op | 8.2628 ms/op | 0.95 | | Uint64 deserialize 100000 - by byte | 82.354 ms/op | 82.776 ms/op | 0.99 |

by benchmarkbot/action