Skip to content

chore: release master - #554

Merged
twoeths merged 1 commit into
masterfrom
release-please--branches--master
Oct 7, 2026
Merged

twoeths merged 1 commit into
masterfrom
release-please--branches--master

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

ssz: 1.8.1

1.8.1 (2026-10-06)

Bug Fixes

  • cache nodes in ProgressiveListBasicTreeView (#553) (dc7d1e3)

This PR was generated with Release Please. See documentation.

@github-actions
github-actions Bot requested a review from a team as a code owner October 6, 2026 16:53
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-06T16:55:11.444492Z ffe9fa2 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added the ssz label Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: d73acc7 Previous: dc7d1e3 Ratio
batch hash 16 x 64 Uint8Array 31250 times - as-sha256 124.05 ms/op 402.71 ms/op 0.31
executeHashComputations - as-sha256 10.371 ms/op 34.242 ms/op 0.30
Copy Uint8Array 100000 slice 31.202 us/op 197.88 us/op 0.16
Full benchmark results
Benchmark suite Current: d73acc7 Previous: dc7d1e3 Ratio
digestTwoHashObjects 50023 times 20.281 ms/op 38.691 ms/op 0.52
digest2Bytes32 50023 times 23.018 ms/op 42.110 ms/op 0.55
digest 50023 times 22.724 ms/op 41.946 ms/op 0.54
input length 32 502.00 ns/op 909.00 ns/op 0.55
input length 64 563.00 ns/op 1.0310 us/op 0.55
input length 128 970.00 ns/op 1.7590 us/op 0.55
input length 256 1.3800 us/op 2.6100 us/op 0.53
input length 512 2.2770 us/op 4.3440 us/op 0.52
input length 1024 4.5080 us/op 8.4350 us/op 0.53
digest 1000000 times 351.66 ms/op 653.17 ms/op 0.54
hashObjectToByteArray 50023 times 585.50 us/op 980.66 us/op 0.60
byteArrayToHashObject 50023 times 653.91 us/op 1.0832 ms/op 0.60
digest64 200092 times 89.680 ms/op 165.55 ms/op 0.54
hash 200092 times using batchHash4UintArray64s 61.252 ms/op 178.41 ms/op 0.34
digest64HashObjects 200092 times 80.026 ms/op 154.01 ms/op 0.52
hash 200092 times using batchHash4HashObjectInputs 51.591 ms/op 148.99 ms/op 0.35
getGindicesAtDepth 1.9950 us/op 3.2830 us/op 0.61
iterateAtDepth 3.3600 us/op 5.8230 us/op 0.58
getGindexBits 160.00 ns/op 335.00 ns/op 0.48
gindexIterator 499.00 ns/op 782.00 ns/op 0.64
HashComputationLevel.push then loop 16.512 ms/op 28.024 ms/op 0.59
HashComputation[] push then loop 15.643 ms/op 40.660 ms/op 0.38
hash 2 32 bytes Uint8Array 500000 times - hashtree 85.676 ms/op 142.57 ms/op 0.60
batch hash 16 x 64 Uint8Array 31250 times - hashtree 21.773 ms/op 24.583 ms/op 0.89
hashTwoObjects 500000 times - hashtree 98.222 ms/op 159.10 ms/op 0.62
executeHashComputations - hashtree 5.0679 ms/op 7.8275 ms/op 0.65
hash 2 32 bytes Uint8Array 500000 times - as-sha256 207.12 ms/op 392.20 ms/op 0.53
batch hash 16 x 64 Uint8Array 31250 times - as-sha256 124.05 ms/op 402.71 ms/op 0.31
hashTwoObjects 500000 times - as-sha256 214.09 ms/op 404.85 ms/op 0.53
executeHashComputations - as-sha256 10.371 ms/op 34.242 ms/op 0.30
hash 2 32 bytes Uint8Array 500000 times - noble 573.65 ms/op 969.73 ms/op 0.59
batch hash 16 x 64 Uint8Array 31250 times - noble 553.51 ms/op 934.52 ms/op 0.59
hashTwoObjects 500000 times - noble 935.04 ms/op 1.4808 s/op 0.63
executeHashComputations - noble 14.805 ms/op 28.902 ms/op 0.51
getHashComputations 765.66 us/op 1.6110 ms/op 0.48
executeHashComputations 4.2585 ms/op 7.0733 ms/op 0.60
get root 7.3152 ms/op 12.629 ms/op 0.58
getNodeH() x7812.5 avg hindex 8.2820 us/op 12.208 us/op 0.68
getNodeH() x7812.5 index 0 2.3580 us/op 4.6920 us/op 0.50
getNodeH() x7812.5 index 7 2.3590 us/op 4.6840 us/op 0.50
getNodeH() x7812.5 index 7 with key array 2.4040 us/op 4.6860 us/op 0.51
new LeafNode() x7812.5 133.53 us/op 258.73 us/op 0.52
getHashComputations 250000 nodes 6.7812 ms/op 9.7996 ms/op 0.69
batchHash 250000 nodes 45.468 ms/op 64.079 ms/op 0.71
get root 250000 nodes 55.359 ms/op 91.052 ms/op 0.61
getHashComputations 500000 nodes 13.914 ms/op 19.979 ms/op 0.70
batchHash 500000 nodes 118.64 ms/op 148.86 ms/op 0.80
get root 500000 nodes 107.94 ms/op 180.36 ms/op 0.60
getHashComputations 1000000 nodes 29.697 ms/op 39.026 ms/op 0.76
batchHash 1000000 nodes 210.37 ms/op 261.72 ms/op 0.80
get root 1000000 nodes 221.04 ms/op 362.98 ms/op 0.61
multiproof - depth 15, 1 requested leaves 3.7230 us/op 6.4530 us/op 0.58
tree offset multiproof - depth 15, 1 requested leaves 8.9090 us/op 15.437 us/op 0.58
compact multiproof - depth 15, 1 requested leaves 1.7390 us/op 2.4640 us/op 0.71
multiproof - depth 15, 2 requested leaves 5.4680 us/op 9.7740 us/op 0.56
tree offset multiproof - depth 15, 2 requested leaves 10.539 us/op 18.587 us/op 0.57
compact multiproof - depth 15, 2 requested leaves 1.7060 us/op 2.4690 us/op 0.69
multiproof - depth 15, 3 requested leaves 7.7020 us/op 14.100 us/op 0.55
tree offset multiproof - depth 15, 3 requested leaves 13.452 us/op 24.309 us/op 0.55
compact multiproof - depth 15, 3 requested leaves 2.0240 us/op 2.7640 us/op 0.73
multiproof - depth 15, 4 requested leaves 10.239 us/op 18.723 us/op 0.55
tree offset multiproof - depth 15, 4 requested leaves 16.612 us/op 29.978 us/op 0.55
compact multiproof - depth 15, 4 requested leaves 2.1630 us/op 3.2260 us/op 0.67
packedRootsBytesToLeafNodes bytes 4000 offset 0 2.4290 us/op 5.3770 us/op 0.45
packedRootsBytesToLeafNodes bytes 4000 offset 1 2.4280 us/op 5.3770 us/op 0.45
packedRootsBytesToLeafNodes bytes 4000 offset 2 2.4370 us/op 5.3760 us/op 0.45
packedRootsBytesToLeafNodes bytes 4000 offset 3 2.4340 us/op 5.3790 us/op 0.45
subtreeFillToContents depth 40 count 250000 12.248 ms/op 16.715 ms/op 0.73
setRoot - gindexBitstring 9.5955 ms/op 18.466 ms/op 0.52
setRoot - gindex 10.245 ms/op 19.362 ms/op 0.53
getRoot - gindexBitstring 1.1391 ms/op 1.9011 ms/op 0.60
getRoot - gindex 1.2583 ms/op 2.4697 ms/op 0.51
getHashObject then setHashObject 10.213 ms/op 20.618 ms/op 0.50
setNodeWithFn 9.2669 ms/op 18.774 ms/op 0.49
getNodeAtDepth depth 0 x100000 115.23 us/op 210.66 us/op 0.55
setNodeAtDepth depth 0 x100000 795.83 us/op 1.8176 ms/op 0.44
getNodesAtDepth depth 0 x100000 141.11 us/op 280.87 us/op 0.50
setNodesAtDepth depth 0 x100000 434.46 us/op 692.70 us/op 0.63
getNodeAtDepth depth 1 x100000 177.50 us/op 281.04 us/op 0.63
setNodeAtDepth depth 1 x100000 2.9870 ms/op 7.2490 ms/op 0.41
getNodesAtDepth depth 1 x100000 246.04 us/op 406.62 us/op 0.61
setNodesAtDepth depth 1 x100000 2.9896 ms/op 5.7039 ms/op 0.52
getNodeAtDepth depth 2 x100000 489.27 us/op 622.01 us/op 0.79
setNodeAtDepth depth 2 x100000 6.6794 ms/op 13.367 ms/op 0.50
getNodesAtDepth depth 2 x100000 7.8760 ms/op 16.479 ms/op 0.48
setNodesAtDepth depth 2 x100000 11.061 ms/op 20.357 ms/op 0.54
tree.getNodesAtDepth - gindexes 10.616 ms/op 10.067 ms/op 1.05
tree.getNodesAtDepth - push all nodes 748.95 us/op 1.0345 ms/op 0.72
tree.getNodesAtDepth - navigation 116.09 us/op 154.35 us/op 0.75
tree.setNodesAtDepth - indexes 344.66 us/op 584.97 us/op 0.59
set at depth 8 347.00 ns/op 648.00 ns/op 0.54
set at depth 16 506.00 ns/op 948.00 ns/op 0.53
set at depth 32 832.00 ns/op 1.5800 us/op 0.53
iterateNodesAtDepth 8 256 6.8500 us/op 11.964 us/op 0.57
getNodesAtDepth 8 256 1.7140 us/op 3.1560 us/op 0.54
iterateNodesAtDepth 16 65536 2.1446 ms/op 3.7504 ms/op 0.57
getNodesAtDepth 16 65536 556.18 us/op 955.61 us/op 0.58
iterateNodesAtDepth 32 250000 8.0588 ms/op 14.090 ms/op 0.57
getNodesAtDepth 32 250000 2.0620 ms/op 3.5875 ms/op 0.57
iterateNodesAtDepth 40 250000 8.0031 ms/op 14.014 ms/op 0.57
getNodesAtDepth 40 250000 2.0259 ms/op 3.5905 ms/op 0.56
250000 validators root getter 58.726 ms/op 95.263 ms/op 0.62
250000 validators batchHash() 51.584 ms/op 65.783 ms/op 0.78
250000 validators hashComputations 10.687 ms/op 11.582 ms/op 0.92
bitlist bytes to struct (120,90) 187.00 ns/op 356.00 ns/op 0.53
bitlist bytes to tree (120,90) 1.2350 us/op 1.7980 us/op 0.69
bitlist bytes to struct (2048,2048) 480.00 ns/op 711.00 ns/op 0.68
bitlist bytes to tree (2048,2048) 1.8610 us/op 3.7450 us/op 0.50
ByteListType - deserialize 5.0295 ms/op 6.5987 ms/op 0.76
BasicListType - deserialize 6.5136 ms/op 8.6907 ms/op 0.75
ByteListType - serialize 6.3498 ms/op 7.0390 ms/op 0.90
BasicListType - serialize 8.5587 ms/op 11.187 ms/op 0.77
BasicListType - tree_convertToStruct 13.754 ms/op 22.553 ms/op 0.61
List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate 2.0068 ms/op 4.0927 ms/op 0.49
List[uint8, 68719476736] len 300000 ViewDU.get(i) 1.4896 ms/op 3.6683 ms/op 0.41
Array.push len 300000 empty Array - number 3.0205 ms/op 4.0412 ms/op 0.75
Array.set len 300000 from new Array - number 888.99 us/op 1.1612 ms/op 0.77
Array.set len 300000 - number 3.1895 ms/op 4.1380 ms/op 0.77
Uint8Array.set len 300000 190.97 us/op 276.16 us/op 0.69
Uint32Array.set len 300000 275.75 us/op 605.70 us/op 0.46
Container({a: uint8, b: uint8}) getViewDU x300000 32.560 ms/op 25.758 ms/op 1.26
ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 5.3656 ms/op 9.0760 ms/op 0.59
List(Container) len 300000 ViewDU.getAllReadonly() + iterate 67.807 ms/op 88.546 ms/op 0.77
List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate 161.48 ms/op 275.57 ms/op 0.59
List(Container) len 300000 ViewDU.get(i) 6.5394 ms/op 8.6885 ms/op 0.75
List(Container) len 300000 ViewDU.getReadonly(i) 6.3260 ms/op 8.6274 ms/op 0.73
List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate 9.3431 ms/op 16.723 ms/op 0.56
List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate 3.7273 ms/op 4.2733 ms/op 0.87
List(ContainerNodeStruct) len 300000 ViewDU.get(i) 5.1375 ms/op 7.0974 ms/op 0.72
List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) 5.4346 ms/op 7.1164 ms/op 0.76
Array.push len 300000 empty Array - object 3.1802 ms/op 4.1911 ms/op 0.76
Array.set len 300000 from new Array - object 741.13 us/op 1.2439 ms/op 0.60
Array.set len 300000 - object 3.3244 ms/op 4.2686 ms/op 0.78
cachePermanentRootStruct no cache 1.5670 us/op 2.5840 us/op 0.61
cachePermanentRootStruct with cache 82.000 ns/op 158.00 ns/op 0.52
epochParticipation len 250000 rws 7813 1.4046 ms/op 2.2250 ms/op 0.63
Deneb BeaconBlock.hashTreeRoot(), numTransaction=200 2.3836 ms/op 4.0965 ms/op 0.58
BeaconState ViewDU batchHashTreeRoot vc=200000 mod=100000 160.60 ms/op 196.77 ms/op 0.82
BeaconState ViewDU batchHashTreeRoot - commit step vc=200000 mod=100000 132.99 ms/op 159.29 ms/op 0.83
BeaconState ViewDU batchHashTreeRoot - hash step vc=200000 mod=100000 27.698 ms/op 32.128 ms/op 0.86
BeaconState ViewDU hashTreeRoot() vc=200000 mod=100000 413.42 ms/op 641.77 ms/op 0.64
BeaconState ViewDU hashTreeRoot - commit step vc=200000 mod=100000 42.538 ms/op 57.207 ms/op 0.74
BeaconState ViewDU hashTreeRoot - validator tree creation vc=100000 mod=100000 150.94 ms/op 239.38 ms/op 0.63
sweep 16384 balances after clone + commit 12.424 ns/op 21.559 ns/op 0.58
deserialize Attestation - tree 1.7350 us/op 3.0560 us/op 0.57
deserialize Attestation - struct 939.00 ns/op 1.6300 us/op 0.58
deserialize Attestation - struct (reuse bytes) 665.00 ns/op 1.1640 us/op 0.57
deserialize SignedAggregateAndProof - tree 2.4190 us/op 4.2110 us/op 0.57
deserialize SignedAggregateAndProof - struct 1.9350 us/op 3.0720 us/op 0.63
deserialize SignedAggregateAndProof - struct (reuse bytes) 858.00 ns/op 1.5410 us/op 0.56
deserialize SyncCommitteeMessage - tree 674.00 ns/op 1.1880 us/op 0.57
deserialize SyncCommitteeMessage - struct 649.00 ns/op 976.00 ns/op 0.66
deserialize SyncCommitteeMessage - struct (reuse bytes) 348.00 ns/op 596.00 ns/op 0.58
deserialize SignedContributionAndProof - tree 1.3830 us/op 2.5370 us/op 0.55
deserialize SignedContributionAndProof - struct 1.5390 us/op 2.2970 us/op 0.67
deserialize SignedContributionAndProof - struct (reuse bytes) 555.00 ns/op 1.0160 us/op 0.55
deserialize SignedBeaconBlock - tree 135.29 us/op 266.04 us/op 0.51
deserialize SignedBeaconBlock - struct 70.595 us/op 128.65 us/op 0.55
deserialize SignedBeaconBlock - struct (reuse bytes) 35.539 us/op 66.984 us/op 0.53
BeaconState vc 300000 - deserialize tree 230.11 ms/op 319.56 ms/op 0.72
BeaconState vc 300000 - serialize tree 66.336 ms/op 102.55 ms/op 0.65
BeaconState.historicalRoots vc 300000 - deserialize tree 558.00 ns/op 641.00 ns/op 0.87
BeaconState.historicalRoots vc 300000 - serialize tree 498.00 ns/op 553.00 ns/op 0.90
BeaconState.validators vc 300000 - deserialize tree 193.48 ms/op 292.98 ms/op 0.66
BeaconState.validators vc 300000 - serialize tree 30.908 ms/op 46.181 ms/op 0.67
BeaconState.balances vc 300000 - deserialize tree 5.4014 ms/op 8.0183 ms/op 0.67
BeaconState.balances vc 300000 - serialize tree 7.6134 ms/op 6.3279 ms/op 1.20
BeaconState.previousEpochParticipation vc 300000 - deserialize tree 376.63 us/op 681.66 us/op 0.55
BeaconState.previousEpochParticipation vc 300000 - serialize tree 356.55 us/op 548.32 us/op 0.65
BeaconState.currentEpochParticipation vc 300000 - deserialize tree 377.50 us/op 680.88 us/op 0.55
BeaconState.currentEpochParticipation vc 300000 - serialize tree 328.65 us/op 651.97 us/op 0.50
BeaconState.inactivityScores vc 300000 - deserialize tree 6.4626 ms/op 8.0979 ms/op 0.80
BeaconState.inactivityScores vc 300000 - serialize tree 3.7243 ms/op 4.8833 ms/op 0.76
hashTreeRoot Attestation - struct 4.5940 us/op 7.7960 us/op 0.59
hashTreeRoot Attestation - tree 4.1970 us/op 7.0250 us/op 0.60
hashTreeRoot SignedAggregateAndProof - struct 6.7410 us/op 11.245 us/op 0.60
hashTreeRoot SignedAggregateAndProof - tree 6.3700 us/op 10.594 us/op 0.60
hashTreeRoot SyncCommitteeMessage - struct 1.5840 us/op 2.6420 us/op 0.60
hashTreeRoot SyncCommitteeMessage - tree 1.5510 us/op 2.6110 us/op 0.59
hashTreeRoot SignedContributionAndProof - struct 4.0770 us/op 6.7720 us/op 0.60
hashTreeRoot SignedContributionAndProof - tree 4.3240 us/op 7.2870 us/op 0.59
hashTreeRoot SignedBeaconBlock - struct 395.81 us/op 688.49 us/op 0.57
hashTreeRoot SignedBeaconBlock - tree 382.59 us/op 650.09 us/op 0.59
hashTreeRoot Validator - struct 2.0910 us/op 3.4750 us/op 0.60
hashTreeRoot Validator - tree 3.2460 us/op 5.3160 us/op 0.61
BeaconState vc 300000 - hashTreeRoot tree 1.1356 s/op 1.7809 s/op 0.64
BeaconState vc 300000 - batchHashTreeRoot tree 2.6786 s/op 3.3621 s/op 0.80
BeaconState.historicalRoots vc 300000 - hashTreeRoot tree 489.00 ns/op 757.00 ns/op 0.65
BeaconState.validators vc 300000 - hashTreeRoot tree 1.1079 s/op 1.7711 s/op 0.63
BeaconState.balances vc 300000 - hashTreeRoot tree 16.596 ms/op 27.025 ms/op 0.61
BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree 1.9865 ms/op 3.3912 ms/op 0.59
BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree 1.9685 ms/op 3.3912 ms/op 0.58
BeaconState.inactivityScores vc 300000 - hashTreeRoot tree 15.978 ms/op 27.234 ms/op 0.59
hash64 x18 3.6430 us/op 6.1330 us/op 0.59
hashTwoObjects x18 3.7020 us/op 6.1960 us/op 0.60
hash64 x1740 340.49 us/op 573.97 us/op 0.59
hashTwoObjects x1740 345.69 us/op 577.16 us/op 0.60
hash64 x2700000 545.71 ms/op 906.51 ms/op 0.60
hashTwoObjects x2700000 536.02 ms/op 888.14 ms/op 0.60
get_exitEpoch - ContainerType 87.000 ns/op 166.00 ns/op 0.52
get_exitEpoch - ContainerNodeStructType 90.000 ns/op 174.00 ns/op 0.52
set_exitEpoch - ContainerType 100.00 ns/op 194.00 ns/op 0.52
set_exitEpoch - ContainerNodeStructType 90.000 ns/op 178.00 ns/op 0.51
get_pubkey - ContainerType 479.00 ns/op 746.00 ns/op 0.64
get_pubkey - ContainerNodeStructType 90.000 ns/op 164.00 ns/op 0.55
hashTreeRoot - ContainerType 165.00 ns/op 298.00 ns/op 0.55
hashTreeRoot - ContainerNodeStructType 158.00 ns/op 298.00 ns/op 0.53
createProof - ContainerType 1.8460 us/op 3.0910 us/op 0.60
createProof - ContainerNodeStructType 10.095 us/op 17.109 us/op 0.59
serialize - ContainerType 983.00 ns/op 1.3280 us/op 0.74
serialize - ContainerNodeStructType 608.00 ns/op 1.0470 us/op 0.58
set_exitEpoch_and_hashTreeRoot - ContainerType 1.3050 us/op 2.0800 us/op 0.63
set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType 3.4730 us/op 5.8190 us/op 0.60
doBatchHashTreeRootValidators 2.3980 us/op 3.2400 us/op 0.74
ContainerNodeStructViewDU hashTreeRoot 13.029 us/op 20.839 us/op 0.63
Array - for of 1.9150 us/op 3.4510 us/op 0.55
Array - for(;;) 1.6140 us/op 2.8140 us/op 0.57
basicListValue.readonlyValuesArray() 1.8523 ms/op 3.1116 ms/op 0.60
basicListValue.readonlyValuesArray() + loop all 2.2770 ms/op 3.7147 ms/op 0.61
compositeListValue.readonlyValuesArray() 5.9409 ms/op 10.520 ms/op 0.56
compositeListValue.readonlyValuesArray() + loop all 7.7966 ms/op 10.509 ms/op 0.74
Number64UintType - get balances list 1.6823 ms/op 2.6172 ms/op 0.64
Number64UintType - set balances list 5.3756 ms/op 9.9982 ms/op 0.54
Number64UintType - get and increase 10 then set 16.775 ms/op 27.352 ms/op 0.61
Number64UintType - increase 10 using applyDelta 7.8197 ms/op 14.566 ms/op 0.54
Number64UintType - increase 10 using applyDeltaInBatch 7.8921 ms/op 14.512 ms/op 0.54
tree_newTreeFromUint64Deltas 7.8969 ms/op 13.874 ms/op 0.57
unsafeUint8ArrayToTree 13.109 ms/op 19.878 ms/op 0.66
bitLength(50) 96.000 ns/op 188.00 ns/op 0.51
bitLengthStr(50) 100.00 ns/op 195.00 ns/op 0.51
bitLength(8000) 94.000 ns/op 191.00 ns/op 0.49
bitLengthStr(8000) 130.00 ns/op 236.00 ns/op 0.55
bitLength(250000) 93.000 ns/op 188.00 ns/op 0.49
bitLengthStr(250000) 152.00 ns/op 268.00 ns/op 0.57
merkleize 32 chunks 6.3220 us/op 10.928 us/op 0.58
merkleizeBlocksBytes 32 chunks 2.0040 us/op 2.6250 us/op 0.76
merkleizeBlockArray 32 chunks 3.2570 us/op 4.8300 us/op 0.67
merkleize 128 chunks 25.290 us/op 43.417 us/op 0.58
merkleizeBlocksBytes 128 chunks 5.7380 us/op 6.6140 us/op 0.87
merkleizeBlockArray 128 chunks 9.8300 us/op 14.092 us/op 0.70
merkleize 512 chunks 100.06 us/op 173.53 us/op 0.58
merkleizeBlocksBytes 512 chunks 20.193 us/op 21.403 us/op 0.94
merkleizeBlockArray 512 chunks 36.538 us/op 48.877 us/op 0.75
merkleize 1024 chunks 206.67 us/op 352.53 us/op 0.59
merkleizeBlocksBytes 1024 chunks 39.128 us/op 40.660 us/op 0.96
merkleizeBlockArray 1024 chunks 68.761 us/op 95.057 us/op 0.72
floor - Math.floor (53) 0.23863 ns/op 0.35022 ns/op 0.68
floor - << 0 (53) 0.23722 ns/op 0.35015 ns/op 0.68
floor - Math.floor (512) 0.23739 ns/op 0.35018 ns/op 0.68
floor - << 0 (512) 0.23725 ns/op 0.35017 ns/op 0.68
fnIf(0) 0.86579 ns/op 1.5104 ns/op 0.57
fnSwitch(0) 2.2536 ns/op 2.4898 ns/op 0.91
fnObj(0) 0.23718 ns/op 0.35014 ns/op 0.68
fnArr(0) 0.24218 ns/op 0.35025 ns/op 0.69
fnIf(4) 2.1918 ns/op 2.1765 ns/op 1.01
fnSwitch(4) 1.7107 ns/op 2.1769 ns/op 0.79
fnObj(4) 0.23835 ns/op 0.35018 ns/op 0.68
fnArr(4) 0.23842 ns/op 0.35020 ns/op 0.68
fnIf(9) 3.0267 ns/op 3.1096 ns/op 0.97
fnSwitch(9) 1.7160 ns/op 2.1768 ns/op 0.79
fnObj(9) 0.23735 ns/op 0.35020 ns/op 0.68
fnArr(9) 0.23775 ns/op 0.35023 ns/op 0.68
Container {a,b,vec} - as struct x100000 23.654 us/op 34.825 us/op 0.68
Container {a,b,vec} - as tree x100000 341.06 us/op 653.73 us/op 0.52
Container {a,vec,b} - as struct x100000 59.090 us/op 77.215 us/op 0.77
Container {a,vec,b} - as tree x100000 520.25 us/op 653.44 us/op 0.80
get 2 props x1000000 - rawObject 237.00 us/op 311.41 us/op 0.76
get 2 props x1000000 - proxy 41.725 ms/op 98.242 ms/op 0.42
get 2 props x1000000 - customObj 238.05 us/op 311.30 us/op 0.76
Simple object binary -> struct 246.00 ns/op 437.00 ns/op 0.56
Simple object binary -> tree_backed 574.00 ns/op 955.00 ns/op 0.60
Simple object struct -> tree_backed 834.00 ns/op 1.4320 us/op 0.58
Simple object tree_backed -> struct 775.00 ns/op 1.2670 us/op 0.61
Simple object struct -> binary 418.00 ns/op 733.00 ns/op 0.57
Simple object tree_backed -> binary 649.00 ns/op 1.0790 us/op 0.60
aggregationBits binary -> struct 207.00 ns/op 368.00 ns/op 0.56
aggregationBits binary -> tree_backed 1.0670 us/op 1.8310 us/op 0.58
aggregationBits struct -> tree_backed 1.2670 us/op 2.1630 us/op 0.59
aggregationBits tree_backed -> struct 523.00 ns/op 862.00 ns/op 0.61
aggregationBits struct -> binary 363.00 ns/op 577.00 ns/op 0.63
aggregationBits tree_backed -> binary 445.00 ns/op 750.00 ns/op 0.59
List(uint8) 100000 binary -> struct 501.25 us/op 703.68 us/op 0.71
List(uint8) 100000 binary -> tree_backed 128.30 us/op 227.65 us/op 0.56
List(uint8) 100000 struct -> tree_backed 823.45 us/op 1.5775 ms/op 0.52
List(uint8) 100000 tree_backed -> struct 534.87 us/op 788.19 us/op 0.68
List(uint8) 100000 struct -> binary 1.3368 ms/op 1.3497 ms/op 0.99
List(uint8) 100000 tree_backed -> binary 101.72 us/op 169.52 us/op 0.60
List(uint64Number) 100000 binary -> struct 623.76 us/op 1.0545 ms/op 0.59
List(uint64Number) 100000 binary -> tree_backed 1.0760 ms/op 1.9256 ms/op 0.56
List(uint64Number) 100000 struct -> tree_backed 1.9177 ms/op 3.6063 ms/op 0.53
List(uint64Number) 100000 tree_backed -> struct 1.0098 ms/op 1.7835 ms/op 0.57
List(uint64Number) 100000 struct -> binary 1.6258 ms/op 2.6807 ms/op 0.61
List(uint64Number) 100000 tree_backed -> binary 834.49 us/op 1.7760 ms/op 0.47
List(Uint64Bigint) 100000 binary -> struct 1.0165 ms/op 1.5783 ms/op 0.64
List(Uint64Bigint) 100000 binary -> tree_backed 1.0647 ms/op 1.9247 ms/op 0.55
List(Uint64Bigint) 100000 struct -> tree_backed 1.8352 ms/op 3.4450 ms/op 0.53
List(Uint64Bigint) 100000 tree_backed -> struct 1.4730 ms/op 2.2543 ms/op 0.65
List(Uint64Bigint) 100000 struct -> binary 1.4901 ms/op 2.3101 ms/op 0.65
List(Uint64Bigint) 100000 tree_backed -> binary 867.28 us/op 1.5987 ms/op 0.54
Vector(Root) 100000 binary -> struct 7.9148 ms/op 11.172 ms/op 0.71
Vector(Root) 100000 binary -> tree_backed 12.508 ms/op 17.421 ms/op 0.72
Vector(Root) 100000 struct -> tree_backed 14.198 ms/op 21.518 ms/op 0.66
Vector(Root) 100000 tree_backed -> struct 9.4684 ms/op 14.530 ms/op 0.65
Vector(Root) 100000 struct -> binary 3.2869 ms/op 6.4953 ms/op 0.51
Vector(Root) 100000 tree_backed -> binary 2.5016 ms/op 4.5885 ms/op 0.55
List(Validator) 100000 binary -> struct 49.103 ms/op 68.999 ms/op 0.71
List(Validator) 100000 binary -> tree_backed 128.50 ms/op 202.15 ms/op 0.64
List(Validator) 100000 struct -> tree_backed 144.50 ms/op 232.11 ms/op 0.62
List(Validator) 100000 tree_backed -> struct 99.525 ms/op 127.83 ms/op 0.78
List(Validator) 100000 struct -> binary 25.405 ms/op 47.134 ms/op 0.54
List(Validator) 100000 tree_backed -> binary 49.461 ms/op 58.952 ms/op 0.84
List(Validator-NS) 100000 binary -> struct 47.807 ms/op 66.523 ms/op 0.72
List(Validator-NS) 100000 binary -> tree_backed 65.177 ms/op 98.320 ms/op 0.66
List(Validator-NS) 100000 struct -> tree_backed 79.846 ms/op 109.93 ms/op 0.73
List(Validator-NS) 100000 tree_backed -> struct 70.640 ms/op 98.484 ms/op 0.72
List(Validator-NS) 100000 struct -> binary 6.4764 ms/op 13.246 ms/op 0.49
List(Validator-NS) 100000 tree_backed -> binary 17.789 ms/op 22.965 ms/op 0.77
get epochStatuses - MutableVector 57.681 us/op 128.27 us/op 0.45
get epochStatuses - ViewDU 118.25 us/op 170.48 us/op 0.69
set epochStatuses - ListTreeView 1.0618 ms/op 1.7668 ms/op 0.60
set epochStatuses - ListTreeView - set() 269.38 us/op 449.01 us/op 0.60
set epochStatuses - ListTreeView - commit() 432.61 us/op 738.25 us/op 0.59
bitstring 310.08 ns/op 462.33 ns/op 0.67
bit mask 5.0382 ns/op 7.2271 ns/op 0.70
struct - increase slot to 1000000 240.81 us/op 350.14 us/op 0.69
UintNumberType - increase slot to 1000000 16.453 ms/op 31.782 ms/op 0.52
UintBigintType - increase slot to 1000000 93.648 ms/op 164.39 ms/op 0.57
UintBigint8 x 100000 tree_deserialize 2.7893 ms/op 4.2934 ms/op 0.65
UintBigint8 x 100000 tree_serialize 666.72 us/op 1.2456 ms/op 0.54
UintBigint16 x 100000 tree_deserialize 2.5795 ms/op 4.3254 ms/op 0.60
UintBigint16 x 100000 tree_serialize 673.37 us/op 1.2776 ms/op 0.53
UintBigint32 x 100000 tree_deserialize 2.6378 ms/op 5.2878 ms/op 0.50
UintBigint32 x 100000 tree_serialize 875.89 us/op 1.6085 ms/op 0.54
UintBigint64 x 100000 tree_deserialize 2.8869 ms/op 6.1247 ms/op 0.47
UintBigint64 x 100000 tree_serialize 818.67 us/op 1.5961 ms/op 0.51
UintBigint8 x 100000 value_deserialize 273.20 us/op 404.64 us/op 0.68
UintBigint8 x 100000 value_serialize 191.23 us/op 365.58 us/op 0.52
UintBigint16 x 100000 value_deserialize 286.37 us/op 466.76 us/op 0.61
UintBigint16 x 100000 value_serialize 200.38 us/op 360.89 us/op 0.56
UintBigint32 x 100000 value_deserialize 304.75 us/op 466.76 us/op 0.65
UintBigint32 x 100000 value_serialize 240.34 us/op 397.34 us/op 0.60
UintBigint64 x 100000 value_deserialize 374.99 us/op 529.10 us/op 0.71
UintBigint64 x 100000 value_serialize 284.21 us/op 532.73 us/op 0.53
UintBigint8 x 100000 deserialize 1.2862 ms/op 1.9475 ms/op 0.66
UintBigint8 x 100000 serialize 1.1362 ms/op 1.6982 ms/op 0.67
UintBigint16 x 100000 deserialize 1.3656 ms/op 2.0116 ms/op 0.68
UintBigint16 x 100000 serialize 931.18 us/op 1.8145 ms/op 0.51
UintBigint32 x 100000 deserialize 1.3168 ms/op 1.9173 ms/op 0.69
UintBigint32 x 100000 serialize 1.5814 ms/op 2.6767 ms/op 0.59
UintBigint64 x 100000 deserialize 1.3135 ms/op 1.9492 ms/op 0.67
UintBigint64 x 100000 serialize 657.57 us/op 1.0939 ms/op 0.60
UintBigint128 x 100000 deserialize 1.5035 ms/op 2.3143 ms/op 0.65
UintBigint128 x 100000 serialize 6.6005 ms/op 11.745 ms/op 0.56
UintBigint256 x 100000 deserialize 1.9266 ms/op 3.0309 ms/op 0.64
UintBigint256 x 100000 serialize 22.408 ms/op 37.790 ms/op 0.59
Slice from Uint8Array x25000 548.65 us/op 925.76 us/op 0.59
Slice from ArrayBuffer x25000 8.6051 ms/op 10.576 ms/op 0.81
Slice from ArrayBuffer x25000 + new Uint8Array 10.778 ms/op 16.178 ms/op 0.67
Copy Uint8Array 100000 iterate 487.63 us/op 948.52 us/op 0.51
Copy Uint8Array 100000 slice 31.202 us/op 197.88 us/op 0.16
Copy Uint8Array 100000 Uint8Array.prototype.slice.call 31.691 us/op 78.386 us/op 0.40
Copy Buffer 100000 Uint8Array.prototype.slice.call 31.540 us/op 78.246 us/op 0.40
Copy Uint8Array 100000 slice + set 80.842 us/op 141.24 us/op 0.57
Copy Uint8Array 100000 subarray + set 30.686 us/op 70.356 us/op 0.44
Copy Uint8Array 100000 slice arrayBuffer 31.094 us/op 71.253 us/op 0.44
Uint64 deserialize 100000 - iterate Uint8Array 900.66 us/op 1.2387 ms/op 0.73
Uint64 deserialize 100000 - by Uint32A 900.57 us/op 1.2365 ms/op 0.73
Uint64 deserialize 100000 - by DataView.getUint32 x2 939.11 us/op 1.3967 ms/op 0.67
Uint64 deserialize 100000 - by DataView.getBigUint64 2.1877 ms/op 3.7161 ms/op 0.59
Uint64 deserialize 100000 - by byte 9.0431 ms/op 15.709 ms/op 0.58

by benchmarkbot/action

@twoeths
twoeths enabled auto-merge (squash) October 7, 2026 02:35
@twoeths
twoeths merged commit 9dcda99 into master Oct 7, 2026
11 checks passed
@twoeths
twoeths deleted the release-please--branches--master branch October 7, 2026 02:35
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant