Skip to content

chore: migrate yarn 1 to pnpm#496

Merged
wemeetagain merged 3 commits intomasterfrom
nh/migrate-to-pnpm
Dec 1, 2025
Merged

chore: migrate yarn 1 to pnpm#496
wemeetagain merged 3 commits intomasterfrom
nh/migrate-to-pnpm

Conversation

@nazarhussain
Copy link
Copy Markdown
Contributor

@nazarhussain nazarhussain commented Jul 31, 2025

Motivation

Use the latest package manager which is more aligned with multi-runtime support.

Description

  • Migrate yarn.lock file to pnpm-lock.yaml (pnpm import)
  • Update the scripts to use pnpm
  • Update the workflows to use pnpm

Steps to test or reproduce

  • Run all tests

Useful commands migraiton

Yarn 1 pnpm
yarn pnpm install
yarn add dep pnpm add dep
yarn workspace "@chainsafe/ssz" add dep pnpm add dep --filter "@chainsafe/ssz"
yarn workspace foreach run build pnpm -r build

@nazarhussain nazarhussain requested a review from a team as a code owner July 31, 2025 11:17
@nazarhussain nazarhussain changed the title deps: migrate yarn 1 to pnpm chore: migrate yarn 1 to pnpm Jul 31, 2025
@nazarhussain nazarhussain marked this pull request as draft July 31, 2025 12:18
@nazarhussain nazarhussain marked this pull request as ready for review July 31, 2025 12:38
Base automatically changed from nh/remove-simpleserialize to master August 5, 2025 18:58
Comment thread package.json
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Aug 6, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 0f55b54 Previous: a7aa227 Ratio
digestTwoHashObjects 50023 times 48.179 ms/op 48.137 ms/op 1.00
digest2Bytes32 50023 times 54.081 ms/op 54.904 ms/op 0.99
digest 50023 times 53.008 ms/op 53.291 ms/op 0.99
input length 32 1.2080 us/op 1.2280 us/op 0.98
input length 64 1.3480 us/op 1.3890 us/op 0.97
input length 128 2.2790 us/op 2.3340 us/op 0.98
input length 256 3.4210 us/op 3.4170 us/op 1.00
input length 512 5.6370 us/op 5.6010 us/op 1.01
input length 1024 10.596 us/op 10.689 us/op 0.99
digest 1000000 times 873.79 ms/op 871.87 ms/op 1.00
hashObjectToByteArray 50023 times 933.96 us/op 935.15 us/op 1.00
byteArrayToHashObject 50023 times 1.3185 ms/op 1.3088 ms/op 1.01
digest64 200092 times 212.01 ms/op 212.64 ms/op 1.00
hash 200092 times using batchHash4UintArray64s 228.37 ms/op 244.93 ms/op 0.93
digest64HashObjects 200092 times 190.89 ms/op 192.60 ms/op 0.99
hash 200092 times using batchHash4HashObjectInputs 197.98 ms/op 197.10 ms/op 1.00
getGindicesAtDepth 3.6920 us/op 3.6590 us/op 1.01
iterateAtDepth 6.4170 us/op 6.4390 us/op 1.00
getGindexBits 435.00 ns/op 448.00 ns/op 0.97
gindexIterator 921.00 ns/op 897.00 ns/op 1.03
HashComputationLevel.push then loop 26.487 ms/op 26.204 ms/op 1.01
HashComputation[] push then loop 48.987 ms/op 49.350 ms/op 0.99
hash 2 32 bytes Uint8Array 500000 times - hashtree 150.23 ms/op 151.60 ms/op 0.99
batch hash 16 x 64 Uint8Array 31250 times - hashtree 24.487 ms/op 24.454 ms/op 1.00
hashTwoObjects 500000 times - hashtree 169.48 ms/op 173.02 ms/op 0.98
executeHashComputations - hashtree 9.1084 ms/op 10.053 ms/op 0.91
hash 2 32 bytes Uint8Array 500000 times - as-sha256 488.37 ms/op 489.98 ms/op 1.00
batch hash 16 x 64 Uint8Array 31250 times - as-sha256 513.68 ms/op 519.74 ms/op 0.99
hashTwoObjects 500000 times - as-sha256 504.32 ms/op 511.93 ms/op 0.99
executeHashComputations - as-sha256 47.961 ms/op 46.164 ms/op 1.04
hash 2 32 bytes Uint8Array 500000 times - noble 1.2557 s/op 1.2608 s/op 1.00
batch hash 16 x 64 Uint8Array 31250 times - noble 1.2325 s/op 1.2379 s/op 1.00
hashTwoObjects 500000 times - noble 1.5396 s/op 1.6731 s/op 0.92
executeHashComputations - noble 35.964 ms/op 36.102 ms/op 1.00
getHashComputations 2.1351 ms/op 2.2964 ms/op 0.93
executeHashComputations 9.4232 ms/op 10.801 ms/op 0.87
get root 12.626 ms/op 12.831 ms/op 0.98
getNodeH() x7812.5 avg hindex 12.218 us/op 12.050 us/op 1.01
getNodeH() x7812.5 index 0 7.5680 us/op 7.4800 us/op 1.01
getNodeH() x7812.5 index 7 7.5260 us/op 7.5660 us/op 0.99
getNodeH() x7812.5 index 7 with key array 6.2980 us/op 6.2530 us/op 1.01
new LeafNode() x7812.5 301.62 us/op 317.74 us/op 0.95
getHashComputations 250000 nodes 14.924 ms/op 16.215 ms/op 0.92
batchHash 250000 nodes 81.471 ms/op 83.644 ms/op 0.97
get root 250000 nodes 94.678 ms/op 95.525 ms/op 0.99
getHashComputations 500000 nodes 28.516 ms/op 28.154 ms/op 1.01
batchHash 500000 nodes 146.89 ms/op 153.27 ms/op 0.96
get root 500000 nodes 196.03 ms/op 190.55 ms/op 1.03
getHashComputations 1000000 nodes 55.696 ms/op 65.530 ms/op 0.85
batchHash 1000000 nodes 316.98 ms/op 318.56 ms/op 1.00
get root 1000000 nodes 377.81 ms/op 378.88 ms/op 1.00
multiproof - depth 15, 1 requested leaves 7.6010 us/op 8.4150 us/op 0.90
tree offset multiproof - depth 15, 1 requested leaves 16.939 us/op 19.246 us/op 0.88
compact multiproof - depth 15, 1 requested leaves 3.2800 us/op 3.5120 us/op 0.93
multiproof - depth 15, 2 requested leaves 11.132 us/op 11.771 us/op 0.95
tree offset multiproof - depth 15, 2 requested leaves 20.540 us/op 20.862 us/op 0.98
compact multiproof - depth 15, 2 requested leaves 3.1370 us/op 3.4420 us/op 0.91
multiproof - depth 15, 3 requested leaves 15.670 us/op 15.802 us/op 0.99
tree offset multiproof - depth 15, 3 requested leaves 26.553 us/op 26.516 us/op 1.00
compact multiproof - depth 15, 3 requested leaves 3.5970 us/op 3.7110 us/op 0.97
multiproof - depth 15, 4 requested leaves 20.701 us/op 20.870 us/op 0.99
tree offset multiproof - depth 15, 4 requested leaves 32.636 us/op 34.150 us/op 0.96
compact multiproof - depth 15, 4 requested leaves 3.7990 us/op 3.7560 us/op 1.01
packedRootsBytesToLeafNodes bytes 4000 offset 0 5.6810 us/op 5.7080 us/op 1.00
packedRootsBytesToLeafNodes bytes 4000 offset 1 5.5950 us/op 5.7260 us/op 0.98
packedRootsBytesToLeafNodes bytes 4000 offset 2 5.6030 us/op 5.6950 us/op 0.98
packedRootsBytesToLeafNodes bytes 4000 offset 3 5.5900 us/op 5.7490 us/op 0.97
subtreeFillToContents depth 40 count 250000 47.431 ms/op 47.945 ms/op 0.99
setRoot - gindexBitstring 24.010 ms/op 19.961 ms/op 1.20
setRoot - gindex 24.386 ms/op 19.979 ms/op 1.22
getRoot - gindexBitstring 2.4312 ms/op 2.3610 ms/op 1.03
getRoot - gindex 2.9561 ms/op 2.9227 ms/op 1.01
getHashObject then setHashObject 21.942 ms/op 20.620 ms/op 1.06
setNodeWithFn 19.739 ms/op 18.205 ms/op 1.08
getNodeAtDepth depth 0 x100000 280.09 us/op 280.21 us/op 1.00
setNodeAtDepth depth 0 x100000 2.5874 ms/op 2.2461 ms/op 1.15
getNodesAtDepth depth 0 x100000 311.83 us/op 312.20 us/op 1.00
setNodesAtDepth depth 0 x100000 754.73 us/op 792.52 us/op 0.95
getNodeAtDepth depth 1 x100000 348.40 us/op 343.74 us/op 1.01
setNodeAtDepth depth 1 x100000 8.3254 ms/op 7.5249 ms/op 1.11
getNodesAtDepth depth 1 x100000 435.51 us/op 435.88 us/op 1.00
setNodesAtDepth depth 1 x100000 6.6792 ms/op 6.3439 ms/op 1.05
getNodeAtDepth depth 2 x100000 751.79 us/op 809.03 us/op 0.93
setNodeAtDepth depth 2 x100000 16.223 ms/op 14.413 ms/op 1.13
getNodesAtDepth depth 2 x100000 20.389 ms/op 18.099 ms/op 1.13
setNodesAtDepth depth 2 x100000 23.505 ms/op 21.542 ms/op 1.09
tree.getNodesAtDepth - gindexes 8.4602 ms/op 8.0915 ms/op 1.05
tree.getNodesAtDepth - push all nodes 2.2377 ms/op 1.8994 ms/op 1.18
tree.getNodesAtDepth - navigation 311.39 us/op 311.37 us/op 1.00
tree.setNodesAtDepth - indexes 673.77 us/op 638.34 us/op 1.06
set at depth 8 843.00 ns/op 786.00 ns/op 1.07
set at depth 16 1.1880 us/op 1.0260 us/op 1.16
set at depth 32 2.0080 us/op 1.8830 us/op 1.07
iterateNodesAtDepth 8 256 13.764 us/op 13.690 us/op 1.01
getNodesAtDepth 8 256 3.6340 us/op 3.6300 us/op 1.00
iterateNodesAtDepth 16 65536 4.4383 ms/op 4.3328 ms/op 1.02
getNodesAtDepth 16 65536 1.1697 ms/op 1.1433 ms/op 1.02
iterateNodesAtDepth 32 250000 16.276 ms/op 16.105 ms/op 1.01
getNodesAtDepth 32 250000 4.8616 ms/op 4.5262 ms/op 1.07
iterateNodesAtDepth 40 250000 16.247 ms/op 15.748 ms/op 1.03
getNodesAtDepth 40 250000 4.8825 ms/op 4.5383 ms/op 1.08
250000 validators root getter 95.031 ms/op 97.959 ms/op 0.97
250000 validators batchHash() 83.611 ms/op 87.627 ms/op 0.95
250000 validators hashComputations 13.642 ms/op 15.241 ms/op 0.90
bitlist bytes to struct (120,90) 491.00 ns/op 505.00 ns/op 0.97
bitlist bytes to tree (120,90) 2.1190 us/op 2.2890 us/op 0.93
bitlist bytes to struct (2048,2048) 876.00 ns/op 850.00 ns/op 1.03
bitlist bytes to tree (2048,2048) 3.4750 us/op 3.6240 us/op 0.96
ByteListType - deserialize 8.9291 ms/op 9.3454 ms/op 0.96
BasicListType - deserialize 10.069 ms/op 9.9869 ms/op 1.01
ByteListType - serialize 8.0102 ms/op 9.5573 ms/op 0.84
BasicListType - serialize 9.7985 ms/op 10.601 ms/op 0.92
BasicListType - tree_convertToStruct 21.426 ms/op 22.595 ms/op 0.95
List[uint8, 68719476736] len 300000 ViewDU.getAll() + iterate 4.9789 ms/op 5.0229 ms/op 0.99
List[uint8, 68719476736] len 300000 ViewDU.get(i) 4.3757 ms/op 4.3793 ms/op 1.00
Array.push len 300000 empty Array - number 6.7555 ms/op 6.9947 ms/op 0.97
Array.set len 300000 from new Array - number 2.2618 ms/op 1.7946 ms/op 1.26
Array.set len 300000 - number 6.2567 ms/op 5.5861 ms/op 1.12
Uint8Array.set len 300000 384.36 us/op 357.06 us/op 1.08
Uint32Array.set len 300000 506.80 us/op 463.19 us/op 1.09
Container({a: uint8, b: uint8}) getViewDU x300000 33.131 ms/op 30.053 ms/op 1.10
ContainerNodeStruct({a: uint8, b: uint8}) getViewDU x300000 11.519 ms/op 10.580 ms/op 1.09
List(Container) len 300000 ViewDU.getAllReadonly() + iterate 187.75 ms/op 205.33 ms/op 0.91
List(Container) len 300000 ViewDU.getAllReadonlyValues() + iterate 229.29 ms/op 231.11 ms/op 0.99
List(Container) len 300000 ViewDU.get(i) 6.5261 ms/op 6.4494 ms/op 1.01
List(Container) len 300000 ViewDU.getReadonly(i) 6.5341 ms/op 6.4648 ms/op 1.01
List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonly() + iterate 36.606 ms/op 36.772 ms/op 1.00
List(ContainerNodeStruct) len 300000 ViewDU.getAllReadonlyValues() + iterate 5.2130 ms/op 5.1631 ms/op 1.01
List(ContainerNodeStruct) len 300000 ViewDU.get(i) 5.9656 ms/op 6.2607 ms/op 0.95
List(ContainerNodeStruct) len 300000 ViewDU.getReadonly(i) 5.9840 ms/op 6.2452 ms/op 0.96
Array.push len 300000 empty Array - object 6.3138 ms/op 6.3738 ms/op 0.99
Array.set len 300000 from new Array - object 2.0577 ms/op 2.2500 ms/op 0.91
Array.set len 300000 - object 6.1086 ms/op 6.5267 ms/op 0.94
cachePermanentRootStruct no cache 3.1460 us/op 3.2240 us/op 0.98
cachePermanentRootStruct with cache 165.00 ns/op 179.00 ns/op 0.92
epochParticipation len 250000 rws 7813 2.3214 ms/op 2.4367 ms/op 0.95
Deneb BeaconBlock.hashTreeRoot(), numTransaction=200 4.6241 ms/op 4.7135 ms/op 0.98
BeaconState ViewDU batchHashTreeRoot vc=200000 mod=100000 208.35 ms/op 213.45 ms/op 0.98
BeaconState ViewDU batchHashTreeRoot - commit step vc=200000 mod=100000 178.87 ms/op 182.70 ms/op 0.98
BeaconState ViewDU batchHashTreeRoot - hash step vc=200000 mod=100000 49.676 ms/op 47.957 ms/op 1.04
BeaconState ViewDU hashTreeRoot() vc=200000 mod=100000 685.24 ms/op 697.31 ms/op 0.98
BeaconState ViewDU hashTreeRoot - commit step vc=200000 mod=100000 66.716 ms/op 63.570 ms/op 1.05
BeaconState ViewDU hashTreeRoot - validator tree creation vc=100000 mod=100000 253.54 ms/op 260.98 ms/op 0.97
deserialize Attestation - tree 3.6700 us/op 3.6120 us/op 1.02
deserialize Attestation - struct 1.9120 us/op 2.0210 us/op 0.95
deserialize Attestation - struct (reuse bytes) 1.4730 us/op 1.4840 us/op 0.99
deserialize SignedAggregateAndProof - tree 5.1030 us/op 4.9860 us/op 1.02
deserialize SignedAggregateAndProof - struct 3.0620 us/op 3.1440 us/op 0.97
deserialize SignedAggregateAndProof - struct (reuse bytes) 1.9700 us/op 1.8610 us/op 1.06
deserialize SyncCommitteeMessage - tree 1.4170 us/op 1.4520 us/op 0.98
deserialize SyncCommitteeMessage - struct 1.0930 us/op 1.1060 us/op 0.99
deserialize SyncCommitteeMessage - struct (reuse bytes) 772.00 ns/op 774.00 ns/op 1.00
deserialize SignedContributionAndProof - tree 2.7870 us/op 2.8910 us/op 0.96
deserialize SignedContributionAndProof - struct 2.3040 us/op 2.3860 us/op 0.97
deserialize SignedContributionAndProof - struct (reuse bytes) 1.2870 us/op 1.2870 us/op 1.00
deserialize SignedBeaconBlock - tree 280.67 us/op 283.68 us/op 0.99
deserialize SignedBeaconBlock - struct 125.44 us/op 122.11 us/op 1.03
deserialize SignedBeaconBlock - struct (reuse bytes) 79.340 us/op 80.854 us/op 0.98
BeaconState vc 300000 - deserialize tree 660.51 ms/op 631.38 ms/op 1.05
BeaconState vc 300000 - serialize tree 98.577 ms/op 104.59 ms/op 0.94
BeaconState.historicalRoots vc 300000 - deserialize tree 962.00 ns/op 990.00 ns/op 0.97
BeaconState.historicalRoots vc 300000 - serialize tree 668.00 ns/op 675.00 ns/op 0.99
BeaconState.validators vc 300000 - deserialize tree 593.14 ms/op 593.00 ms/op 1.00
BeaconState.validators vc 300000 - serialize tree 36.041 ms/op 38.248 ms/op 0.94
BeaconState.balances vc 300000 - deserialize tree 28.085 ms/op 20.651 ms/op 1.36
BeaconState.balances vc 300000 - serialize tree 3.8093 ms/op 3.9703 ms/op 0.96
BeaconState.previousEpochParticipation vc 300000 - deserialize tree 911.37 us/op 1.0473 ms/op 0.87
BeaconState.previousEpochParticipation vc 300000 - serialize tree 328.19 us/op 315.47 us/op 1.04
BeaconState.currentEpochParticipation vc 300000 - deserialize tree 922.71 us/op 1.0758 ms/op 0.86
BeaconState.currentEpochParticipation vc 300000 - serialize tree 326.42 us/op 312.69 us/op 1.04
BeaconState.inactivityScores vc 300000 - deserialize tree 28.356 ms/op 28.922 ms/op 0.98
BeaconState.inactivityScores vc 300000 - serialize tree 3.7935 ms/op 4.3516 ms/op 0.87
hashTreeRoot Attestation - struct 9.4640 us/op 9.7960 us/op 0.97
hashTreeRoot Attestation - tree 7.3730 us/op 7.5890 us/op 0.97
hashTreeRoot SignedAggregateAndProof - struct 12.574 us/op 12.788 us/op 0.98
hashTreeRoot SignedAggregateAndProof - tree 11.135 us/op 11.299 us/op 0.99
hashTreeRoot SyncCommitteeMessage - struct 3.0810 us/op 3.1510 us/op 0.98
hashTreeRoot SyncCommitteeMessage - tree 2.8410 us/op 2.8790 us/op 0.99
hashTreeRoot SignedContributionAndProof - struct 7.5270 us/op 7.6020 us/op 0.99
hashTreeRoot SignedContributionAndProof - tree 7.7080 us/op 7.8950 us/op 0.98
hashTreeRoot SignedBeaconBlock - struct 741.07 us/op 784.05 us/op 0.95
hashTreeRoot SignedBeaconBlock - tree 663.97 us/op 677.07 us/op 0.98
hashTreeRoot Validator - struct 4.2580 us/op 4.3970 us/op 0.97
hashTreeRoot Validator - tree 5.7060 us/op 5.9650 us/op 0.96
BeaconState vc 300000 - hashTreeRoot tree 1.9710 s/op 2.0012 s/op 0.98
BeaconState vc 300000 - batchHashTreeRoot tree 3.8459 s/op 3.9216 s/op 0.98
BeaconState.historicalRoots vc 300000 - hashTreeRoot tree 843.00 ns/op 862.00 ns/op 0.98
BeaconState.validators vc 300000 - hashTreeRoot tree 2.0872 s/op 2.1899 s/op 0.95
BeaconState.balances vc 300000 - hashTreeRoot tree 28.179 ms/op 28.769 ms/op 0.98
BeaconState.previousEpochParticipation vc 300000 - hashTreeRoot tree 3.4724 ms/op 3.5790 ms/op 0.97
BeaconState.currentEpochParticipation vc 300000 - hashTreeRoot tree 3.4674 ms/op 3.5788 ms/op 0.97
BeaconState.inactivityScores vc 300000 - hashTreeRoot tree 30.302 ms/op 31.859 ms/op 0.95
hash64 x18 7.7050 us/op 8.2210 us/op 0.94
hashTwoObjects x18 6.5050 us/op 6.5550 us/op 0.99
hash64 x1740 659.10 us/op 687.70 us/op 0.96
hashTwoObjects x1740 599.23 us/op 596.03 us/op 1.01
hash64 x2700000 1.0248 s/op 1.0509 s/op 0.98
hashTwoObjects x2700000 932.48 ms/op 924.69 ms/op 1.01
get_exitEpoch - ContainerType 246.00 ns/op 238.00 ns/op 1.03
get_exitEpoch - ContainerNodeStructType 215.00 ns/op 253.00 ns/op 0.85
set_exitEpoch - ContainerType 259.00 ns/op 245.00 ns/op 1.06
set_exitEpoch - ContainerNodeStructType 229.00 ns/op 237.00 ns/op 0.97
get_pubkey - ContainerType 924.00 ns/op 881.00 ns/op 1.05
get_pubkey - ContainerNodeStructType 218.00 ns/op 220.00 ns/op 0.99
hashTreeRoot - ContainerType 419.00 ns/op 411.00 ns/op 1.02
hashTreeRoot - ContainerNodeStructType 408.00 ns/op 419.00 ns/op 0.97
createProof - ContainerType 3.6250 us/op 3.6760 us/op 0.99
createProof - ContainerNodeStructType 19.180 us/op 19.039 us/op 1.01
serialize - ContainerType 1.5990 us/op 1.6520 us/op 0.97
serialize - ContainerNodeStructType 1.1170 us/op 1.1240 us/op 0.99
set_exitEpoch_and_hashTreeRoot - ContainerType 2.4060 us/op 2.7230 us/op 0.88
set_exitEpoch_and_hashTreeRoot - ContainerNodeStructType 6.4170 us/op 6.6850 us/op 0.96
doBatchHashTreeRootValidators 3.5780 us/op 3.5540 us/op 1.01
ContainerNodeStructViewDU hashTreeRoot 22.090 us/op 22.549 us/op 0.98
Array - for of 6.4660 us/op 5.7490 us/op 1.12
Array - for(;;) 6.4530 us/op 5.5990 us/op 1.15
basicListValue.readonlyValuesArray() 3.7413 ms/op 4.1264 ms/op 0.91
basicListValue.readonlyValuesArray() + loop all 3.8857 ms/op 4.4529 ms/op 0.87
compositeListValue.readonlyValuesArray() 30.029 ms/op 30.809 ms/op 0.97
compositeListValue.readonlyValuesArray() + loop all 57.037 ms/op 30.466 ms/op 1.87
Number64UintType - get balances list 4.3606 ms/op 4.4662 ms/op 0.98
Number64UintType - set balances list 10.508 ms/op 10.568 ms/op 0.99
Number64UintType - get and increase 10 then set 33.991 ms/op 42.678 ms/op 0.80
Number64UintType - increase 10 using applyDelta 14.129 ms/op 17.002 ms/op 0.83
Number64UintType - increase 10 using applyDeltaInBatch 14.602 ms/op 16.667 ms/op 0.88
tree_newTreeFromUint64Deltas 21.271 ms/op 19.511 ms/op 1.09
unsafeUint8ArrayToTree 36.365 ms/op 37.891 ms/op 0.96
bitLength(50) 245.00 ns/op 258.00 ns/op 0.95
bitLengthStr(50) 224.00 ns/op 230.00 ns/op 0.97
bitLength(8000) 234.00 ns/op 250.00 ns/op 0.94
bitLengthStr(8000) 306.00 ns/op 290.00 ns/op 1.06
bitLength(250000) 231.00 ns/op 255.00 ns/op 0.91
bitLengthStr(250000) 292.00 ns/op 385.00 ns/op 0.76
merkleize 32 chunks 12.402 us/op 12.511 us/op 0.99
merkleizeBlocksBytes 32 chunks 3.0900 us/op 3.1510 us/op 0.98
merkleizeBlockArray 32 chunks 5.9040 us/op 6.0100 us/op 0.98
merkleize 128 chunks 48.793 us/op 49.730 us/op 0.98
merkleizeBlocksBytes 128 chunks 7.2790 us/op 7.3410 us/op 0.99
merkleizeBlockArray 128 chunks 17.164 us/op 18.422 us/op 0.93
merkleize 512 chunks 194.99 us/op 196.00 us/op 0.99
merkleizeBlocksBytes 512 chunks 22.583 us/op 22.494 us/op 1.00
merkleizeBlockArray 512 chunks 59.530 us/op 59.704 us/op 1.00
merkleize 1024 chunks 389.78 us/op 390.02 us/op 1.00
merkleizeBlocksBytes 1024 chunks 42.434 us/op 42.858 us/op 0.99
merkleizeBlockArray 1024 chunks 115.07 us/op 116.00 us/op 0.99
floor - Math.floor (53) 1.2430 ns/op 1.2440 ns/op 1.00
floor - << 0 (53) 1.2436 ns/op 1.2468 ns/op 1.00
floor - Math.floor (512) 1.2443 ns/op 1.2448 ns/op 1.00
floor - << 0 (512) 1.2421 ns/op 1.2444 ns/op 1.00
fnIf(0) 1.5539 ns/op 1.5553 ns/op 1.00
fnSwitch(0) 2.1751 ns/op 2.1778 ns/op 1.00
fnObj(0) 1.5555 ns/op 1.5580 ns/op 1.00
fnArr(0) 1.5540 ns/op 1.5552 ns/op 1.00
fnIf(4) 2.1762 ns/op 2.1801 ns/op 1.00
fnSwitch(4) 2.1790 ns/op 2.1841 ns/op 1.00
fnObj(4) 1.5591 ns/op 1.5652 ns/op 1.00
fnArr(4) 1.5643 ns/op 1.5545 ns/op 1.01
fnIf(9) 3.1079 ns/op 3.1136 ns/op 1.00
fnSwitch(9) 2.1750 ns/op 2.1773 ns/op 1.00
fnObj(9) 1.5573 ns/op 1.5548 ns/op 1.00
fnArr(9) 1.5532 ns/op 1.5562 ns/op 1.00
Container {a,b,vec} - as struct x100000 124.58 us/op 124.56 us/op 1.00
Container {a,b,vec} - as tree x100000 559.34 us/op 559.92 us/op 1.00
Container {a,vec,b} - as struct x100000 155.54 us/op 155.90 us/op 1.00
Container {a,vec,b} - as tree x100000 560.65 us/op 560.20 us/op 1.00
get 2 props x1000000 - rawObject 310.98 us/op 311.72 us/op 1.00
get 2 props x1000000 - proxy 73.236 ms/op 73.447 ms/op 1.00
get 2 props x1000000 - customObj 311.16 us/op 311.88 us/op 1.00
Simple object binary -> struct 582.00 ns/op 598.00 ns/op 0.97
Simple object binary -> tree_backed 1.6370 us/op 1.6840 us/op 0.97
Simple object struct -> tree_backed 2.1950 us/op 2.2250 us/op 0.99
Simple object tree_backed -> struct 1.4690 us/op 1.5040 us/op 0.98
Simple object struct -> binary 894.00 ns/op 881.00 ns/op 1.01
Simple object tree_backed -> binary 1.2040 us/op 1.3590 us/op 0.89
aggregationBits binary -> struct 483.00 ns/op 495.00 ns/op 0.98
aggregationBits binary -> tree_backed 2.0180 us/op 2.2110 us/op 0.91
aggregationBits struct -> tree_backed 2.4500 us/op 2.3610 us/op 1.04
aggregationBits tree_backed -> struct 947.00 ns/op 1.0310 us/op 0.92
aggregationBits struct -> binary 703.00 ns/op 746.00 ns/op 0.94
aggregationBits tree_backed -> binary 837.00 ns/op 864.00 ns/op 0.97
List(uint8) 100000 binary -> struct 994.48 us/op 939.17 us/op 1.06
List(uint8) 100000 binary -> tree_backed 264.21 us/op 276.46 us/op 0.96
List(uint8) 100000 struct -> tree_backed 1.3655 ms/op 1.3841 ms/op 0.99
List(uint8) 100000 tree_backed -> struct 973.59 us/op 1.0025 ms/op 0.97
List(uint8) 100000 struct -> binary 1.0515 ms/op 1.0547 ms/op 1.00
List(uint8) 100000 tree_backed -> binary 107.75 us/op 107.54 us/op 1.00
List(uint64Number) 100000 binary -> struct 1.2675 ms/op 1.3774 ms/op 0.92
List(uint64Number) 100000 binary -> tree_backed 4.5437 ms/op 4.3932 ms/op 1.03
List(uint64Number) 100000 struct -> tree_backed 6.3267 ms/op 6.7489 ms/op 0.94
List(uint64Number) 100000 tree_backed -> struct 2.3860 ms/op 2.4419 ms/op 0.98
List(uint64Number) 100000 struct -> binary 1.4454 ms/op 1.4521 ms/op 1.00
List(uint64Number) 100000 tree_backed -> binary 1.0531 ms/op 1.1390 ms/op 0.92
List(Uint64Bigint) 100000 binary -> struct 3.7867 ms/op 4.0482 ms/op 0.94
List(Uint64Bigint) 100000 binary -> tree_backed 4.9518 ms/op 4.6561 ms/op 1.06
List(Uint64Bigint) 100000 struct -> tree_backed 7.2187 ms/op 7.4415 ms/op 0.97
List(Uint64Bigint) 100000 tree_backed -> struct 4.7087 ms/op 4.8484 ms/op 0.97
List(Uint64Bigint) 100000 struct -> binary 2.1199 ms/op 2.0966 ms/op 1.01
List(Uint64Bigint) 100000 tree_backed -> binary 1.0617 ms/op 1.3199 ms/op 0.80
Vector(Root) 100000 binary -> struct 36.226 ms/op 35.368 ms/op 1.02
Vector(Root) 100000 binary -> tree_backed 38.434 ms/op 33.278 ms/op 1.15
Vector(Root) 100000 struct -> tree_backed 49.564 ms/op 49.578 ms/op 1.00
Vector(Root) 100000 tree_backed -> struct 50.420 ms/op 49.454 ms/op 1.02
Vector(Root) 100000 struct -> binary 3.0733 ms/op 3.0658 ms/op 1.00
Vector(Root) 100000 tree_backed -> binary 6.5451 ms/op 6.8227 ms/op 0.96
List(Validator) 100000 binary -> struct 100.54 ms/op 113.59 ms/op 0.89
List(Validator) 100000 binary -> tree_backed 360.07 ms/op 338.72 ms/op 1.06
List(Validator) 100000 struct -> tree_backed 385.57 ms/op 374.60 ms/op 1.03
List(Validator) 100000 tree_backed -> struct 207.79 ms/op 209.32 ms/op 0.99
List(Validator) 100000 struct -> binary 29.160 ms/op 29.282 ms/op 1.00
List(Validator) 100000 tree_backed -> binary 108.09 ms/op 106.20 ms/op 1.02
List(Validator-NS) 100000 binary -> struct 113.59 ms/op 109.55 ms/op 1.04
List(Validator-NS) 100000 binary -> tree_backed 150.67 ms/op 166.57 ms/op 0.90
List(Validator-NS) 100000 struct -> tree_backed 182.47 ms/op 180.94 ms/op 1.01
List(Validator-NS) 100000 tree_backed -> struct 148.56 ms/op 150.75 ms/op 0.99
List(Validator-NS) 100000 struct -> binary 7.3612 ms/op 7.4373 ms/op 0.99
List(Validator-NS) 100000 tree_backed -> binary 12.704 ms/op 14.454 ms/op 0.88
get epochStatuses - MutableVector 118.98 us/op 116.40 us/op 1.02
get epochStatuses - ViewDU 177.78 us/op 210.95 us/op 0.84
set epochStatuses - ListTreeView 2.1115 ms/op 2.2068 ms/op 0.96
set epochStatuses - ListTreeView - set() 446.03 us/op 449.87 us/op 0.99
set epochStatuses - ListTreeView - commit() 795.88 us/op 760.97 us/op 1.05
bitstring 518.45 ns/op 514.65 ns/op 1.01
bit mask 13.985 ns/op 13.645 ns/op 1.02
struct - increase slot to 1000000 932.72 us/op 942.04 us/op 0.99
UintNumberType - increase slot to 1000000 27.755 ms/op 27.741 ms/op 1.00
UintBigintType - increase slot to 1000000 178.86 ms/op 171.74 ms/op 1.04
UintBigint8 x 100000 tree_deserialize 6.2706 ms/op 6.3715 ms/op 0.98
UintBigint8 x 100000 tree_serialize 610.72 us/op 1.1365 ms/op 0.54
UintBigint16 x 100000 tree_deserialize 5.5960 ms/op 6.3956 ms/op 0.87
UintBigint16 x 100000 tree_serialize 1.3336 ms/op 1.4438 ms/op 0.92
UintBigint32 x 100000 tree_deserialize 5.4474 ms/op 6.9921 ms/op 0.78
UintBigint32 x 100000 tree_serialize 1.6913 ms/op 2.0948 ms/op 0.81
UintBigint64 x 100000 tree_deserialize 6.3323 ms/op 7.2903 ms/op 0.87
UintBigint64 x 100000 tree_serialize 1.6716 ms/op 2.5433 ms/op 0.66
UintBigint8 x 100000 value_deserialize 406.25 us/op 406.98 us/op 1.00
UintBigint8 x 100000 value_serialize 746.22 us/op 793.05 us/op 0.94
UintBigint16 x 100000 value_deserialize 467.08 us/op 466.66 us/op 1.00
UintBigint16 x 100000 value_serialize 774.83 us/op 762.43 us/op 1.02
UintBigint32 x 100000 value_deserialize 498.18 us/op 498.58 us/op 1.00
UintBigint32 x 100000 value_serialize 822.00 us/op 805.13 us/op 1.02
UintBigint64 x 100000 value_deserialize 530.85 us/op 530.11 us/op 1.00
UintBigint64 x 100000 value_serialize 957.84 us/op 998.88 us/op 0.96
UintBigint8 x 100000 deserialize 3.1191 ms/op 3.3392 ms/op 0.93
UintBigint8 x 100000 serialize 1.6240 ms/op 1.5787 ms/op 1.03
UintBigint16 x 100000 deserialize 3.1758 ms/op 3.3592 ms/op 0.95
UintBigint16 x 100000 serialize 1.5282 ms/op 1.6164 ms/op 0.95
UintBigint32 x 100000 deserialize 3.2895 ms/op 3.3191 ms/op 0.99
UintBigint32 x 100000 serialize 2.8585 ms/op 2.9027 ms/op 0.98
UintBigint64 x 100000 deserialize 4.3160 ms/op 4.2430 ms/op 1.02
UintBigint64 x 100000 serialize 1.6736 ms/op 1.6587 ms/op 1.01
UintBigint128 x 100000 deserialize 5.9205 ms/op 5.9428 ms/op 1.00
UintBigint128 x 100000 serialize 15.880 ms/op 15.882 ms/op 1.00
UintBigint256 x 100000 deserialize 8.6175 ms/op 8.9854 ms/op 0.96
UintBigint256 x 100000 serialize 46.901 ms/op 45.153 ms/op 1.04
Slice from Uint8Array x25000 1.3300 ms/op 1.3461 ms/op 0.99
Slice from ArrayBuffer x25000 16.396 ms/op 17.191 ms/op 0.95
Slice from ArrayBuffer x25000 + new Uint8Array 18.107 ms/op 19.055 ms/op 0.95
Copy Uint8Array 100000 iterate 1.6819 ms/op 1.7058 ms/op 0.99
Copy Uint8Array 100000 slice 104.17 us/op 125.87 us/op 0.83
Copy Uint8Array 100000 Uint8Array.prototype.slice.call 103.51 us/op 123.18 us/op 0.84
Copy Buffer 100000 Uint8Array.prototype.slice.call 104.98 us/op 134.34 us/op 0.78
Copy Uint8Array 100000 slice + set 212.08 us/op 262.15 us/op 0.81
Copy Uint8Array 100000 subarray + set 106.41 us/op 140.26 us/op 0.76
Copy Uint8Array 100000 slice arrayBuffer 106.94 us/op 135.59 us/op 0.79
Uint64 deserialize 100000 - iterate Uint8Array 1.8339 ms/op 2.1571 ms/op 0.85
Uint64 deserialize 100000 - by Uint32A 1.9083 ms/op 2.1297 ms/op 0.90
Uint64 deserialize 100000 - by DataView.getUint32 x2 1.9176 ms/op 2.0931 ms/op 0.92
Uint64 deserialize 100000 - by DataView.getBigUint64 5.1378 ms/op 5.4650 ms/op 0.94
Uint64 deserialize 100000 - by byte 40.328 ms/op 40.610 ms/op 0.99

by benchmarkbot/action

Copy link
Copy Markdown
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - just a question in regard to the lock file

Comment thread pnpm-lock.yaml
@wemeetagain wemeetagain merged commit d72d7af into master Dec 1, 2025
11 checks passed
@wemeetagain wemeetagain deleted the nh/migrate-to-pnpm branch December 1, 2025 14:44
wemeetagain added a commit that referenced this pull request Mar 18, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>as-sha256: 1.2.1</summary>

##
[1.2.1](as-sha256-v1.2.0...as-sha256-v1.2.1)
(2026-03-18)


### Miscellaneous

* migrate yarn 1 to pnpm
([#496](#496))
([d72d7af](d72d7af))
</details>

<details><summary>persistent-merkle-tree: 1.2.2</summary>

##
[1.2.2](persistent-merkle-tree-v1.2.1...persistent-merkle-tree-v1.2.2)
(2026-03-18)


### Miscellaneous

* fix ssz links ([#511](#511))
([3956039](3956039))
* migrate yarn 1 to pnpm
([#496](#496))
([d72d7af](d72d7af))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @chainsafe/as-sha256 bumped to 1.2.1
</details>

<details><summary>ssz: 1.3.1</summary>

##
[1.3.1](ssz-v1.3.0...ssz-v1.3.1)
(2026-03-18)


### Bug Fixes

* allow array-like input for VectorBasicType views
([#512](#512))
([1d0ff62](1d0ff62))


### Miscellaneous

* fix ssz links ([#511](#511))
([3956039](3956039))
* migrate yarn 1 to pnpm
([#496](#496))
([d72d7af](d72d7af))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @chainsafe/as-sha256 bumped to 1.2.1
    * @chainsafe/persistent-merkle-tree bumped to 1.2.2
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

3 participants