Skip to content

feat(rln-wasm): porting the rln-wasm feature from v0.6.1 to v0.7.0 #292

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
Apr 8, 2025

Conversation

vinhtc27
Copy link
Contributor

@vinhtc27 vinhtc27 commented Mar 17, 2025

Bring Back WebAssembly Support for ZeroKit on v0.8.0 #289

  • Update minor versions of all dependencies.
  • Update documentation to reflect these changes.
  • Vendor wasmer v4.4.0 in my git repository for ark-circom v0.5.0.
  • Resolve wasm-pack build failures (os error 2) caused by a Node.js version mismatch.
  • Restore the previous CI pipeline for the rln-wasm feature and update to the stable toolchain.
  • Use ark-circom with the wasm feature for WebAssembly compatibility and the rln.wasm file for witness calculation.
  • Fix dependency issues related to ark-circom v0.5.0, which currently uses wasmer v4.4.0 and is affected by this issue.
  • Install WABT with brew and apt-get instead of cloning to fix wasm-strip not found issue in the CI workflow.
  • Install wasm-pack with curl instead of using wasm-pack-action to fix parse exception error in the CI workflow.
  • Use the .wasm file with JS bindings for witness calculation, which is generated from iden3/circom during circuit compilation. This allows witness computation outside RLN instance.
  • Refactor the rln module by moving circuit-related files to the src/circuit folder for better organization.
  • Remove ark-circom and wasmer by cloning the CircomReduction struct and the read_zkey function into the rln module, which reduces the repository's build size and speeds up compilation time and the CI workflow duration.
  • These change also address #282 by removing wasmer and wasmer-wasix, which lack x32 system support.
  • Benchmark rln-wasm with wasm_bindgen_test, covering RLN instance creation, key generation, witness calculation, proving, and verification. Also, add them to v0.6.1 in benchmark-v0.6.1 for comparison.
  • Add arkzkey feature for rln-wasm, including tests, benchmarks, CI workflow updates, and related documentation.
  • Benchmark rln-wasm in the browser using HTML, covering initialization, RLN instance creation, proving, and verification; fork to the benchmark-v0.7.0 branch for later use here.
  • Fix clippy error: "this repeat().take() can be written more concisely" on CI workflow for utils module. (error)
  • Update Makefile.toml to be able to run make build, make test, and make bench from root and inside each modules.

Copy link

Benchmark for d6c5bc2

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 868.8±41.62ns 860.0±12.27ns -1.01%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.10ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.16ns 3.8±0.08ns 0.00%
FullMerkleTree::override_range 1362.4±15.96ns 1380.2±49.06ns +1.31%
FullMerkleTree::set 858.2±13.08ns 868.3±9.37ns +1.18%
OptimalMerkleTree::compute_root 1030.8±9.63ns 1001.0±16.86ns -2.89%
OptimalMerkleTree::delete 1018.2±10.02ns 993.1±13.72ns -2.47%
OptimalMerkleTree::get 22.3±0.26ns 22.4±0.26ns +0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.27ns 7.5±0.08ns 0.00%
OptimalMerkleTree::get_subtree_root 24.2±0.35ns 23.9±0.25ns -1.24%
OptimalMerkleTree::override_range 4.1±0.04µs 4.2±0.12µs +2.44%
OptimalMerkleTree::set 1019.0±22.38ns 991.1±12.85ns -2.74%

- Use ark-circom wasm feature for WebAssembly target
- Integrate rln.wasm file for witness calculation
- Fix dependencies issues related to compatibility with ark-circom 0.5.0
- Bump dependencies versions across all modules
- Update documentation
Copy link

Benchmark for 07c9a5f

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 858.2±8.06ns 861.5±7.96ns +0.38%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.37ns 7.5±0.05ns 0.00%
FullMerkleTree::get_subtree_root 3.9±0.21ns 3.9±0.09ns 0.00%
FullMerkleTree::override_range 1318.5±13.21ns 1335.4±60.53ns +1.28%
FullMerkleTree::set 866.9±8.75ns 855.5±10.99ns -1.32%
OptimalMerkleTree::compute_root 996.9±11.94ns 1051.1±12.11ns +5.44%
OptimalMerkleTree::delete 991.2±11.95ns 1001.8±40.59ns +1.07%
OptimalMerkleTree::get 22.4±0.24ns 22.7±0.28ns +1.34%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.27ns 7.5±0.16ns 0.00%
OptimalMerkleTree::get_subtree_root 23.9±0.32ns 24.2±1.15ns +1.26%
OptimalMerkleTree::override_range 4.1±0.03µs 4.1±0.20µs 0.00%
OptimalMerkleTree::set 990.5±10.37ns 987.9±15.80ns -0.26%

Copy link

Benchmark for 07c9a5f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.4±0.10ms 13.5±0.10ms +0.75%
OptimalMerkleTree::::full_height_gen 577.5±4.45µs 580.4±9.27µs +0.50%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 377.6±10.08ns 373.6±3.49ns -1.06%
Pmtree::get_empty_leaves_indices 8.7±0.13ns 8.7±0.08ns 0.00%
Pmtree::get_subtree_root 520.4±7.36ns 527.4±4.58ns +1.35%
Pmtree::override_range 239.8±9.37µs 249.1±5.04µs +3.88%
Pmtree::set 54.5±1.60µs 54.7±1.24µs +0.37%
Pmtree:delete 54.3±0.49µs 54.5±0.55µs +0.37%
Set/FullMerkleTree::::set/1 554.7±5.06µs 559.4±11.61µs +0.85%
Set/FullMerkleTree::::set/10 5.5±0.02ms 5.6±0.27ms +1.82%
Set/FullMerkleTree::::set/100 55.5±0.16ms 56.0±0.25ms +0.90%
Set/FullMerkleTree::::set_range/1 553.6±6.67µs 557.4±5.15µs +0.69%
Set/FullMerkleTree::::set_range/10 753.6±3.16µs 762.5±6.49µs +1.18%
Set/FullMerkleTree::::set_range/100 3.3±0.04ms 3.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 556.1±7.90µs 562.7±3.78µs +1.19%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.6±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 55.7±0.15ms 56.3±0.14ms +1.08%
Set/OptimalMerkleTree::::set_range/1 555.6±5.90µs 562.6±6.94µs +1.26%
Set/OptimalMerkleTree::::set_range/10 5.6±0.01ms 5.6±0.01ms 0.00%
Set/OptimalMerkleTree::::set_range/100 55.6±0.16ms 56.0±0.31ms +0.72%
zkey::zkey_from_raw 634.8±2.90ms 638.3±3.15ms +0.55%

Copy link

Benchmark for 07c9a5f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.2±0.19ms 12.8±0.26ms -3.03%
OptimalMerkleTree::::full_height_gen 562.2±13.99µs 568.2±11.72µs +1.07%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 369.0±9.23ns 365.7±9.77ns -0.89%
Pmtree::get_empty_leaves_indices 8.7±0.26ns 8.3±0.21ns -4.60%
Pmtree::get_subtree_root 525.5±14.96ns 503.5±14.05ns -4.19%
Pmtree::override_range 232.2±6.82µs 230.5±9.41µs -0.73%
Pmtree::set 52.9±1.43µs 52.3±1.42µs -1.13%
Pmtree:delete 53.4±1.11µs 52.3±1.42µs -2.06%
Set/FullMerkleTree::::set/1 542.6±13.60µs 534.5±13.88µs -1.49%
Set/FullMerkleTree::::set/10 5.4±0.15ms 5.3±0.12ms -1.85%
Set/FullMerkleTree::::set/100 53.0±1.41ms 52.4±1.21ms -1.13%
Set/FullMerkleTree::::set_range/1 553.4±9.97µs 536.4±14.36µs -3.07%
Set/FullMerkleTree::::set_range/10 726.2±17.29µs 732.1±19.55µs +0.81%
Set/FullMerkleTree::::set_range/100 3.1±0.10ms 3.2±0.08ms +3.23%
Set/OptimalMerkleTree::::set/1 531.7±14.84µs 547.0±10.48µs +2.88%
Set/OptimalMerkleTree::::set/10 5.3±0.13ms 5.3±0.13ms 0.00%
Set/OptimalMerkleTree::::set/100 53.1±1.30ms 54.5±1.16ms +2.64%
Set/OptimalMerkleTree::::set_range/1 531.5±13.10µs 542.5±16.01µs +2.07%
Set/OptimalMerkleTree::::set_range/10 5.3±0.12ms 5.3±0.12ms 0.00%
Set/OptimalMerkleTree::::set_range/100 54.0±1.42ms 54.3±1.51ms +0.56%
arkzkey::arkzkey_from_raw_uncompressed 5.5±0.04ms 5.5±0.08ms 0.00%
zkey::zkey_from_raw 619.4±8.61ms 606.7±7.68ms -2.05%

Copy link

Benchmark for 832ffe6

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 856.5±18.34ns 879.2±10.88ns +2.65%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.06ns 7.5±0.10ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.10ns 3.8±0.11ns 0.00%
FullMerkleTree::override_range 1316.3±16.18ns 1344.2±13.38ns +2.12%
FullMerkleTree::set 863.6±9.42ns 855.9±5.97ns -0.89%
OptimalMerkleTree::compute_root 997.2±8.85ns 1017.1±13.43ns +2.00%
OptimalMerkleTree::delete 991.4±11.48ns 1002.2±31.70ns +1.09%
OptimalMerkleTree::get 22.4±0.19ns 22.3±0.28ns -0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.12ns 0.00%
OptimalMerkleTree::get_subtree_root 23.9±0.23ns 24.1±0.26ns +0.84%
OptimalMerkleTree::override_range 4.1±0.05µs 4.2±0.10µs +2.44%
OptimalMerkleTree::set 990.1±7.66ns 1019.4±117.65ns +2.96%

Copy link

Benchmark for 832ffe6

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.7±0.17ms 13.3±0.12ms -2.92%
OptimalMerkleTree::::full_height_gen 580.9±6.34µs 582.9±19.29µs +0.34%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 383.8±32.53ns 377.2±22.15ns -1.72%
Pmtree::get_empty_leaves_indices 8.7±0.13ns 8.7±0.07ns 0.00%
Pmtree::get_subtree_root 538.0±7.12ns 522.7±10.02ns -2.84%
Pmtree::override_range 240.4±4.87µs 245.3±4.15µs +2.04%
Pmtree::set 54.3±0.57µs 54.6±1.46µs +0.55%
Pmtree:delete 54.2±0.53µs 54.3±0.56µs +0.18%
Set/FullMerkleTree::::set/1 554.9±5.29µs 558.1±4.95µs +0.58%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.6±0.02ms 0.00%
Set/FullMerkleTree::::set/100 55.6±0.26ms 56.2±2.08ms +1.08%
Set/FullMerkleTree::::set_range/1 559.6±9.35µs 558.7±9.28µs -0.16%
Set/FullMerkleTree::::set_range/10 754.3±5.18µs 759.0±8.65µs +0.62%
Set/FullMerkleTree::::set_range/100 3.3±0.14ms 3.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 559.2±5.05µs 559.3±6.05µs +0.02%
Set/OptimalMerkleTree::::set/10 5.6±0.03ms 5.6±0.05ms 0.00%
Set/OptimalMerkleTree::::set/100 55.7±0.12ms 56.0±0.26ms +0.54%
Set/OptimalMerkleTree::::set_range/1 559.6±4.23µs 562.0±16.29µs +0.43%
Set/OptimalMerkleTree::::set_range/10 5.6±0.01ms 5.6±0.19ms 0.00%
Set/OptimalMerkleTree::::set_range/100 55.8±0.20ms 55.9±0.26ms +0.18%
zkey::zkey_from_raw 636.1±4.42ms 650.4±22.85ms +2.25%

Copy link

Benchmark for 832ffe6

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.07ms 13.1±0.11ms -1.50%
OptimalMerkleTree::::full_height_gen 602.8±7.54µs 574.1±10.77µs -4.76%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 375.0±5.44ns 379.9±7.01ns +1.31%
Pmtree::get_empty_leaves_indices 9.0±0.11ns 9.0±1.28ns 0.00%
Pmtree::get_subtree_root 541.8±8.37ns 525.3±5.47ns -3.05%
Pmtree::override_range 234.4±5.34µs 245.7±6.72µs +4.82%
Pmtree::set 54.3±0.61µs 55.0±0.70µs +1.29%
Pmtree:delete 55.0±0.55µs 54.6±0.65µs -0.73%
Set/FullMerkleTree::::set/1 580.3±3.83µs 551.0±4.17µs -5.05%
Set/FullMerkleTree::::set/10 5.8±0.17ms 5.5±0.02ms -5.17%
Set/FullMerkleTree::::set/100 58.1±0.33ms 55.1±0.06ms -5.16%
Set/FullMerkleTree::::set_range/1 580.1±5.63µs 553.1±9.60µs -4.65%
Set/FullMerkleTree::::set_range/10 787.4±3.47µs 750.4±6.09µs -4.70%
Set/FullMerkleTree::::set_range/100 3.4±0.01ms 3.2±0.01ms -5.88%
Set/OptimalMerkleTree::::set/1 589.8±4.62µs 552.5±7.08µs -6.32%
Set/OptimalMerkleTree::::set/10 5.9±0.28ms 5.5±0.04ms -6.78%
Set/OptimalMerkleTree::::set/100 59.0±0.12ms 55.4±0.49ms -6.10%
Set/OptimalMerkleTree::::set_range/1 590.3±16.91µs 552.3±6.88µs -6.44%
Set/OptimalMerkleTree::::set_range/10 5.9±0.03ms 5.5±0.19ms -6.78%
Set/OptimalMerkleTree::::set_range/100 59.2±0.23ms 55.3±0.22ms -6.59%
arkzkey::arkzkey_from_raw_uncompressed 5.9±0.08ms 6.0±0.13ms +1.69%
zkey::zkey_from_raw 639.5±0.61ms 635.8±4.05ms -0.58%

Copy link

Benchmark for 220cdf4

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 857.7±23.65ns 855.5±11.77ns -0.26%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.06ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.09ns 3.8±0.08ns 0.00%
FullMerkleTree::override_range 1312.3±16.05ns 1350.3±9.46ns +2.90%
FullMerkleTree::set 864.6±10.44ns 881.2±7.26ns +1.92%
OptimalMerkleTree::compute_root 998.2±13.26ns 996.3±12.60ns -0.19%
OptimalMerkleTree::delete 991.4±12.64ns 999.4±54.25ns +0.81%
OptimalMerkleTree::get 22.8±0.22ns 22.5±0.33ns -1.32%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.12ns 7.5±0.06ns 0.00%
OptimalMerkleTree::get_subtree_root 24.3±0.42ns 23.9±0.19ns -1.65%
OptimalMerkleTree::override_range 4.1±0.04µs 4.1±0.10µs 0.00%
OptimalMerkleTree::set 997.7±37.40ns 988.8±7.84ns -0.89%

Copy link

Benchmark for 220cdf4

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.9±0.36ms 13.7±0.10ms -1.44%
OptimalMerkleTree::::full_height_gen 578.4±4.14µs 581.5±9.67µs +0.54%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 377.2±8.90ns 374.9±5.66ns -0.61%
Pmtree::get_empty_leaves_indices 8.8±0.31ns 8.7±0.12ns -1.14%
Pmtree::get_subtree_root 525.9±15.48ns 522.6±5.99ns -0.63%
Pmtree::override_range 240.4±4.34µs 245.7±6.92µs +2.20%
Pmtree::set 54.4±0.60µs 54.5±0.58µs +0.18%
Pmtree:delete 54.4±1.02µs 54.2±0.57µs -0.37%
Set/FullMerkleTree::::set/1 555.6±5.77µs 559.6±6.58µs +0.72%
Set/FullMerkleTree::::set/10 5.6±0.02ms 5.6±0.02ms 0.00%
Set/FullMerkleTree::::set/100 55.7±0.47ms 55.7±0.12ms 0.00%
Set/FullMerkleTree::::set_range/1 554.9±5.18µs 559.3±7.32µs +0.79%
Set/FullMerkleTree::::set_range/10 754.3±4.31µs 758.7±6.07µs +0.58%
Set/FullMerkleTree::::set_range/100 3.3±0.03ms 3.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 556.8±5.97µs 560.2±9.37µs +0.61%
Set/OptimalMerkleTree::::set/10 5.6±0.10ms 5.6±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 55.6±0.09ms 56.0±0.17ms +0.72%
Set/OptimalMerkleTree::::set_range/1 556.2±8.40µs 558.9±6.80µs +0.49%
Set/OptimalMerkleTree::::set_range/10 5.5±0.02ms 5.6±0.01ms +1.82%
Set/OptimalMerkleTree::::set_range/100 55.7±0.25ms 56.2±1.34ms +0.90%
zkey::zkey_from_raw 638.6±12.94ms 639.1±4.76ms +0.08%

Copy link

Benchmark for 220cdf4

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.08ms 13.4±0.24ms +0.75%
OptimalMerkleTree::::full_height_gen 577.4±5.49µs 578.3±5.58µs +0.16%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 380.8±3.00ns 376.8±3.75ns -1.05%
Pmtree::get_empty_leaves_indices 9.0±0.14ns 8.7±0.22ns -3.33%
Pmtree::get_subtree_root 549.6±9.64ns 513.8±6.87ns -6.51%
Pmtree::override_range 248.4±8.06µs 238.2±2.84µs -4.11%
Pmtree::set 54.3±0.57µs 55.3±1.99µs +1.84%
Pmtree:delete 54.4±0.60µs 54.5±0.62µs +0.18%
Set/FullMerkleTree::::set/1 560.6±5.00µs 551.3±4.71µs -1.66%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.5±0.02ms -1.79%
Set/FullMerkleTree::::set/100 55.8±0.06ms 55.4±0.18ms -0.72%
Set/FullMerkleTree::::set_range/1 559.7±5.57µs 551.6±7.39µs -1.45%
Set/FullMerkleTree::::set_range/10 756.1±5.45µs 749.9±5.99µs -0.82%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.2±0.01ms -3.03%
Set/OptimalMerkleTree::::set/1 557.0±4.88µs 554.1±11.71µs -0.52%
Set/OptimalMerkleTree::::set/10 5.6±0.01ms 5.5±0.02ms -1.79%
Set/OptimalMerkleTree::::set/100 55.8±0.22ms 55.4±0.54ms -0.72%
Set/OptimalMerkleTree::::set_range/1 560.3±5.45µs 552.7±6.25µs -1.36%
Set/OptimalMerkleTree::::set_range/10 5.6±0.05ms 5.5±0.04ms -1.79%
Set/OptimalMerkleTree::::set_range/100 55.7±0.04ms 55.4±0.71ms -0.54%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.02ms 5.8±0.03ms 0.00%
zkey::zkey_from_raw 639.6±2.35ms 635.3±2.86ms -0.67%

Copy link

Benchmark for 85f0021

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 862.4±9.52ns 856.4±8.95ns -0.70%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.08ns 7.5±0.17ns 0.00%
FullMerkleTree::get_subtree_root 3.9±0.09ns 3.8±0.10ns -2.56%
FullMerkleTree::override_range 1329.4±10.82ns 1315.0±13.74ns -1.08%
FullMerkleTree::set 856.2±9.05ns 861.3±5.51ns +0.60%
OptimalMerkleTree::compute_root 998.5±16.07ns 998.9±7.93ns +0.04%
OptimalMerkleTree::delete 989.3±10.11ns 993.7±20.76ns +0.44%
OptimalMerkleTree::get 22.0±0.52ns 22.4±0.17ns +1.82%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.12ns 7.5±0.07ns 0.00%
OptimalMerkleTree::get_subtree_root 24.1±0.38ns 23.9±0.19ns -0.83%
OptimalMerkleTree::override_range 4.1±0.07µs 4.1±0.06µs 0.00%
OptimalMerkleTree::set 987.6±11.37ns 1013.6±107.63ns +2.63%

Copy link

Benchmark for 85f0021

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 14.1±0.46ms 13.8±0.10ms -2.13%
OptimalMerkleTree::::full_height_gen 607.8±13.99µs 589.1±19.43µs -3.08%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 372.4±14.74ns 395.6±5.17ns +6.23%
Pmtree::get_empty_leaves_indices 8.7±0.22ns 8.8±0.34ns +1.15%
Pmtree::get_subtree_root 525.8±5.11ns 549.0±8.88ns +4.41%
Pmtree::override_range 255.8±6.04µs 239.3±3.95µs -6.45%
Pmtree::set 54.3±0.78µs 55.7±0.50µs +2.58%
Pmtree:delete 54.4±0.64µs 55.0±0.91µs +1.10%
Set/FullMerkleTree::::set/1 562.8±11.66µs 558.3±3.27µs -0.80%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.6±0.16ms 0.00%
Set/FullMerkleTree::::set/100 56.4±0.16ms 56.1±1.79ms -0.53%
Set/FullMerkleTree::::set_range/1 561.1±7.58µs 560.0±11.47µs -0.20%
Set/FullMerkleTree::::set_range/10 776.0±4.58µs 756.9±6.44µs -2.46%
Set/FullMerkleTree::::set_range/100 3.4±0.02ms 3.3±0.01ms -2.94%
Set/OptimalMerkleTree::::set/1 665.9±4.29µs 559.0±6.65µs -16.05%
Set/OptimalMerkleTree::::set/10 6.7±0.29ms 5.6±0.01ms -16.42%
Set/OptimalMerkleTree::::set/100 66.6±0.09ms 56.1±0.73ms -15.77%
Set/OptimalMerkleTree::::set_range/1 664.5±3.80µs 558.6±4.27µs -15.94%
Set/OptimalMerkleTree::::set_range/10 6.7±0.03ms 5.6±0.02ms -16.42%
Set/OptimalMerkleTree::::set_range/100 66.7±0.16ms 56.0±1.54ms -16.04%
zkey::zkey_from_raw 634.6±3.70ms 646.3±20.41ms +1.84%

Copy link

Benchmark for 85f0021

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.07ms 13.0±0.05ms -2.26%
OptimalMerkleTree::::full_height_gen 577.4±4.29µs 573.3±8.45µs -0.71%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 390.3±4.64ns 384.5±3.38ns -1.49%
Pmtree::get_empty_leaves_indices 9.0±0.12ns 8.7±0.15ns -3.33%
Pmtree::get_subtree_root 548.8±6.51ns 521.4±8.30ns -4.99%
Pmtree::override_range 247.7±11.14µs 234.1±5.99µs -5.49%
Pmtree::set 54.6±0.57µs 55.2±0.69µs +1.10%
Pmtree:delete 54.6±0.34µs 54.9±0.40µs +0.55%
Set/FullMerkleTree::::set/1 556.9±3.11µs 552.1±3.86µs -0.86%
Set/FullMerkleTree::::set/10 5.6±0.02ms 5.6±0.22ms 0.00%
Set/FullMerkleTree::::set/100 56.2±0.16ms 55.3±0.13ms -1.60%
Set/FullMerkleTree::::set_range/1 556.9±4.74µs 554.8±11.08µs -0.38%
Set/FullMerkleTree::::set_range/10 760.3±3.45µs 750.5±3.81µs -1.29%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.2±0.01ms -3.03%
Set/OptimalMerkleTree::::set/1 559.9±5.69µs 554.9±5.84µs -0.89%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.5±0.00ms -1.79%
Set/OptimalMerkleTree::::set/100 56.1±0.17ms 55.5±0.16ms -1.07%
Set/OptimalMerkleTree::::set_range/1 556.8±4.93µs 553.5±4.11µs -0.59%
Set/OptimalMerkleTree::::set_range/10 5.6±0.02ms 5.6±0.11ms 0.00%
Set/OptimalMerkleTree::::set_range/100 55.8±0.20ms 55.5±0.10ms -0.54%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.02ms 5.9±0.09ms +1.72%
zkey::zkey_from_raw 634.3±0.96ms 636.2±2.11ms +0.30%

Copy link

Benchmark for b192991

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 854.7±10.23ns 869.7±10.56ns +1.76%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.05ns 7.5±0.10ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.14ns 3.9±0.07ns +2.63%
FullMerkleTree::override_range 1314.0±16.65ns 1325.4±23.93ns +0.87%
FullMerkleTree::set 868.3±22.73ns 862.5±10.49ns -0.67%
OptimalMerkleTree::compute_root 1006.8±6.06ns 1013.3±11.82ns +0.65%
OptimalMerkleTree::delete 995.7±19.35ns 1024.1±10.56ns +2.85%
OptimalMerkleTree::get 22.3±0.19ns 22.6±0.38ns +1.35%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.24ns 7.5±0.08ns 0.00%
OptimalMerkleTree::get_subtree_root 23.9±0.34ns 24.2±0.22ns +1.26%
OptimalMerkleTree::override_range 4.1±0.03µs 4.1±0.20µs 0.00%
OptimalMerkleTree::set 988.9±6.82ns 1023.2±12.73ns +3.47%

Copy link

Benchmark for b192991

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.8±0.11ms 13.4±0.07ms -2.90%
OptimalMerkleTree::::full_height_gen 585.9±28.57µs 585.6±18.88µs -0.05%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 379.2±16.97ns 375.5±5.10ns -0.98%
Pmtree::get_empty_leaves_indices 8.7±0.10ns 8.7±0.13ns 0.00%
Pmtree::get_subtree_root 523.5±7.19ns 529.7±10.75ns +1.18%
Pmtree::override_range 250.0±5.17µs 248.2±6.43µs -0.72%
Pmtree::set 54.4±1.04µs 55.0±0.65µs +1.10%
Pmtree:delete 54.2±0.68µs 55.2±2.53µs +1.85%
Set/FullMerkleTree::::set/1 556.9±5.77µs 561.5±10.95µs +0.83%
Set/FullMerkleTree::::set/10 5.5±0.01ms 5.6±0.03ms +1.82%
Set/FullMerkleTree::::set/100 55.7±0.21ms 56.0±0.12ms +0.54%
Set/FullMerkleTree::::set_range/1 555.9±12.93µs 560.4±6.03µs +0.81%
Set/FullMerkleTree::::set_range/10 760.4±42.92µs 759.9±5.32µs -0.07%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 555.2±4.46µs 561.5±22.03µs +1.13%
Set/OptimalMerkleTree::::set/10 5.6±0.01ms 5.6±0.07ms 0.00%
Set/OptimalMerkleTree::::set/100 55.7±0.14ms 55.9±0.09ms +0.36%
Set/OptimalMerkleTree::::set_range/1 555.1±3.32µs 559.9±8.83µs +0.86%
Set/OptimalMerkleTree::::set_range/10 5.6±0.05ms 5.6±0.01ms 0.00%
Set/OptimalMerkleTree::::set_range/100 55.7±0.23ms 56.4±2.26ms +1.26%
zkey::zkey_from_raw 639.0±9.55ms 636.6±4.52ms -0.38%

…: `crate_type` within an `#![cfg_attr]` attribute is forbidden in CI again
Copy link

Benchmark for b192991

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.5±0.19ms 13.7±0.15ms +1.48%
OptimalMerkleTree::::full_height_gen 580.4±8.29µs 579.8±17.30µs -0.10%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 389.1±10.38ns 375.3±5.33ns -3.55%
Pmtree::get_empty_leaves_indices 9.0±0.12ns 8.7±0.10ns -3.33%
Pmtree::get_subtree_root 545.9±5.08ns 534.2±34.48ns -2.14%
Pmtree::override_range 245.4±12.79µs 238.8±3.47µs -2.69%
Pmtree::set 54.5±0.89µs 55.0±1.50µs +0.92%
Pmtree:delete 54.5±0.71µs 54.7±0.56µs +0.37%
Set/FullMerkleTree::::set/1 559.5±6.35µs 552.8±8.43µs -1.20%
Set/FullMerkleTree::::set/10 5.6±0.03ms 5.5±0.01ms -1.79%
Set/FullMerkleTree::::set/100 56.1±0.19ms 55.4±0.14ms -1.25%
Set/FullMerkleTree::::set_range/1 559.9±6.09µs 558.7±36.01µs -0.21%
Set/FullMerkleTree::::set_range/10 760.8±5.74µs 750.2±3.80µs -1.39%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.3±0.05ms 0.00%
Set/OptimalMerkleTree::::set/1 560.3±7.08µs 554.0±4.73µs -1.12%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.5±0.07ms -1.79%
Set/OptimalMerkleTree::::set/100 57.0±0.33ms 55.4±0.07ms -2.81%
Set/OptimalMerkleTree::::set_range/1 560.2±6.97µs 552.8±4.36µs -1.32%
Set/OptimalMerkleTree::::set_range/10 5.7±0.02ms 5.5±0.01ms -3.51%
Set/OptimalMerkleTree::::set_range/100 56.9±0.34ms 55.6±1.20ms -2.28%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.08ms 5.8±0.02ms 0.00%
zkey::zkey_from_raw 634.1±0.53ms 638.5±5.13ms +0.69%

Copy link

Benchmark for 1071084

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 856.0±8.65ns 872.4±16.89ns +1.92%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.12ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.10ns 3.8±0.07ns 0.00%
FullMerkleTree::override_range 1313.8±17.42ns 1314.9±12.28ns +0.08%
FullMerkleTree::set 862.6±10.48ns 877.6±14.26ns +1.74%
OptimalMerkleTree::compute_root 1011.9±21.97ns 998.4±20.73ns -1.33%
OptimalMerkleTree::delete 999.4±61.32ns 992.1±11.92ns -0.73%
OptimalMerkleTree::get 22.8±0.65ns 22.7±1.64ns -0.44%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.14ns 7.5±0.11ns 0.00%
OptimalMerkleTree::get_subtree_root 24.2±0.32ns 23.9±0.26ns -1.24%
OptimalMerkleTree::override_range 4.1±0.03µs 4.1±0.05µs 0.00%
OptimalMerkleTree::set 987.6±5.81ns 997.8±65.14ns +1.03%

Copy link

Benchmark for 1071084

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.6±0.09ms 13.7±0.14ms +0.74%
OptimalMerkleTree::::full_height_gen 580.9±10.26µs 596.7±36.82µs +2.72%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 371.5±3.79ns 374.2±3.70ns +0.73%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.07ns 0.00%
Pmtree::get_subtree_root 528.2±5.93ns 525.8±5.43ns -0.45%
Pmtree::override_range 239.8±11.11µs 240.9±4.31µs +0.46%
Pmtree::set 54.4±0.98µs 54.3±0.61µs -0.18%
Pmtree:delete 54.4±1.12µs 54.5±0.45µs +0.18%
Set/FullMerkleTree::::set/1 555.7±5.46µs 560.0±13.87µs +0.77%
Set/FullMerkleTree::::set/10 5.6±0.02ms 5.6±0.01ms 0.00%
Set/FullMerkleTree::::set/100 55.6±0.44ms 56.2±2.73ms +1.08%
Set/FullMerkleTree::::set_range/1 559.9±21.95µs 557.4±3.18µs -0.45%
Set/FullMerkleTree::::set_range/10 753.8±4.34µs 758.0±8.40µs +0.56%
Set/FullMerkleTree::::set_range/100 3.3±0.00ms 3.3±0.02ms 0.00%
Set/OptimalMerkleTree::::set/1 560.6±2.90µs 561.8±5.43µs +0.21%
Set/OptimalMerkleTree::::set/10 5.6±0.18ms 5.6±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 55.9±0.15ms 56.0±0.43ms +0.18%
Set/OptimalMerkleTree::::set_range/1 560.2±8.07µs 561.7±5.83µs +0.27%
Set/OptimalMerkleTree::::set_range/10 5.6±0.20ms 5.6±0.01ms 0.00%
Set/OptimalMerkleTree::::set_range/100 55.9±0.55ms 56.0±0.15ms +0.18%
zkey::zkey_from_raw 638.9±6.37ms 641.8±12.36ms +0.45%

Copy link

Benchmark for 1071084

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.7±0.14ms 13.6±0.13ms -0.73%
OptimalMerkleTree::::full_height_gen 577.4±7.34µs 575.0±7.29µs -0.42%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 380.6±4.35ns 380.7±3.43ns +0.03%
Pmtree::get_empty_leaves_indices 9.0±0.08ns 8.7±0.19ns -3.33%
Pmtree::get_subtree_root 536.1±5.83ns 521.3±5.38ns -2.76%
Pmtree::override_range 237.5±3.14µs 236.2±3.55µs -0.55%
Pmtree::set 54.3±0.86µs 55.1±1.47µs +1.47%
Pmtree:delete 54.2±0.57µs 54.6±0.58µs +0.74%
Set/FullMerkleTree::::set/1 559.0±4.61µs 551.8±3.00µs -1.29%
Set/FullMerkleTree::::set/10 5.6±0.04ms 5.5±0.05ms -1.79%
Set/FullMerkleTree::::set/100 56.1±0.16ms 55.2±0.09ms -1.60%
Set/FullMerkleTree::::set_range/1 559.7±6.41µs 552.7±3.68µs -1.25%
Set/FullMerkleTree::::set_range/10 759.5±3.31µs 749.6±5.98µs -1.30%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.2±0.03ms -3.03%
Set/OptimalMerkleTree::::set/1 560.2±5.87µs 552.4±3.59µs -1.39%
Set/OptimalMerkleTree::::set/10 5.6±0.01ms 5.5±0.03ms -1.79%
Set/OptimalMerkleTree::::set/100 56.1±0.14ms 56.0±1.64ms -0.18%
Set/OptimalMerkleTree::::set_range/1 557.5±6.52µs 553.5±5.41µs -0.72%
Set/OptimalMerkleTree::::set_range/10 5.6±0.02ms 5.5±0.03ms -1.79%
Set/OptimalMerkleTree::::set_range/100 56.1±0.06ms 55.4±0.41ms -1.25%
arkzkey::arkzkey_from_raw_uncompressed 5.9±0.01ms 6.0±0.17ms +1.69%
zkey::zkey_from_raw 634.9±1.64ms 637.3±2.56ms +0.38%

Copy link

Benchmark for cb2e682

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 876.9±8.35ns 856.9±15.25ns -2.28%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.09ns 7.5±0.06ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.10ns 3.9±0.13ns +2.63%
FullMerkleTree::override_range 1315.2±17.00ns 1313.1±7.78ns -0.16%
FullMerkleTree::set 882.0±8.59ns 862.3±7.55ns -2.23%
OptimalMerkleTree::compute_root 996.8±7.02ns 997.7±12.07ns +0.09%
OptimalMerkleTree::delete 992.3±10.39ns 998.0±38.19ns +0.57%
OptimalMerkleTree::get 22.5±0.28ns 22.4±0.19ns -0.44%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.38ns 7.5±0.23ns 0.00%
OptimalMerkleTree::get_subtree_root 23.9±0.27ns 24.0±0.25ns +0.42%
OptimalMerkleTree::override_range 4.1±0.04µs 4.1±0.14µs 0.00%
OptimalMerkleTree::set 990.8±7.70ns 992.5±20.77ns +0.17%

Copy link

Benchmark for cb2e682

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.5±0.34ms 13.2±0.07ms -2.22%
OptimalMerkleTree::::full_height_gen 580.2±31.46µs 577.7±5.20µs -0.43%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 377.2±6.74ns 382.2±3.88ns +1.33%
Pmtree::get_empty_leaves_indices 8.7±0.10ns 8.7±0.08ns 0.00%
Pmtree::get_subtree_root 520.8±4.83ns 523.8±4.77ns +0.58%
Pmtree::override_range 241.0±4.17µs 234.4±4.54µs -2.74%
Pmtree::set 54.5±1.09µs 54.5±0.78µs 0.00%
Pmtree:delete 54.3±0.65µs 54.6±1.47µs +0.55%
Set/FullMerkleTree::::set/1 554.5±4.41µs 560.9±11.89µs +1.15%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.6±0.02ms 0.00%
Set/FullMerkleTree::::set/100 55.6±0.19ms 56.2±0.25ms +1.08%
Set/FullMerkleTree::::set_range/1 559.1±19.40µs 561.2±18.48µs +0.38%
Set/FullMerkleTree::::set_range/10 754.6±4.44µs 763.7±13.41µs +1.21%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 555.8±6.57µs 561.2±4.09µs +0.97%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.6±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 55.7±0.33ms 56.0±0.18ms +0.54%
Set/OptimalMerkleTree::::set_range/1 554.1±4.70µs 560.7±3.07µs +1.19%
Set/OptimalMerkleTree::::set_range/10 5.6±0.02ms 5.6±0.01ms 0.00%
Set/OptimalMerkleTree::::set_range/100 55.7±0.09ms 56.1±0.15ms +0.72%
zkey::zkey_from_raw 634.0±0.74ms 634.3±0.92ms +0.05%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 9d4a7c5

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.4±0.13ms 12.5±0.19ms -6.72%
OptimalMerkleTree::::full_height_gen 577.9±6.82µs 596.2±4.75µs +3.17%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 376.2±4.62ns 369.8±5.01ns -1.70%
Pmtree::get_empty_leaves_indices 8.7±0.10ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 530.6±5.45ns 541.7±6.34ns +2.09%
Pmtree::override_range 241.8±4.99µs 236.4±7.14µs -2.23%
Pmtree::set 57.9±1.66µs 56.4±0.36µs -2.59%
Pmtree:delete 57.2±0.52µs 56.5±1.00µs -1.22%
Set/FullMerkleTree::::set/1 556.2±6.25µs 576.5±5.74µs +3.65%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.8±0.01ms +3.57%
Set/FullMerkleTree::::set/100 55.6±0.58ms 57.8±0.24ms +3.96%
Set/FullMerkleTree::::set_range/1 557.0±15.57µs 585.6±41.23µs +5.13%
Set/FullMerkleTree::::set_range/10 754.5±2.75µs 783.6±10.06µs +3.86%
Set/FullMerkleTree::::set_range/100 3.3±0.02ms 3.4±0.00ms +3.03%
Set/OptimalMerkleTree::::set/1 559.7±5.15µs 587.6±4.10µs +4.98%
Set/OptimalMerkleTree::::set/10 5.6±0.01ms 5.9±0.01ms +5.36%
Set/OptimalMerkleTree::::set/100 55.8±0.31ms 59.2±1.17ms +6.09%
Set/OptimalMerkleTree::::set_range/1 557.3±5.32µs 583.7±3.53µs +4.74%
Set/OptimalMerkleTree::::set_range/10 5.6±0.02ms 5.9±0.07ms +5.36%
Set/OptimalMerkleTree::::set_range/100 55.9±1.03ms 58.4±0.15ms +4.47%
zkey::zkey_from_raw 635.4±2.41ms 684.7±13.34ms +7.76%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 7d745f0

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 869.2±11.02ns 885.4±73.25ns +1.86%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.09ns 7.5±0.07ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.06ns 3.9±0.14ns +2.63%
FullMerkleTree::override_range 1333.5±14.93ns 1334.8±12.73ns +0.10%
FullMerkleTree::set 873.8±8.56ns 859.0±8.41ns -1.69%
OptimalMerkleTree::compute_root 1005.8±10.09ns 1005.9±11.65ns +0.01%
OptimalMerkleTree::delete 1001.9±10.90ns 1006.3±67.64ns +0.44%
OptimalMerkleTree::get 22.3±0.33ns 22.5±0.26ns +0.90%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.06ns 7.5±0.19ns 0.00%
OptimalMerkleTree::get_subtree_root 24.1±1.28ns 24.4±0.34ns +1.24%
OptimalMerkleTree::override_range 4.1±0.12µs 4.1±0.14µs 0.00%
OptimalMerkleTree::set 1001.3±14.89ns 999.6±16.02ns -0.17%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 7d745f0

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.41ms 12.5±0.27ms -6.02%
OptimalMerkleTree::::full_height_gen 581.2±5.05µs 602.4±9.54µs +3.65%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 393.6±6.25ns 405.3±128.69ns +2.97%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 8.7±0.09ns 0.00%
Pmtree::get_subtree_root 537.4±6.81ns 534.1±38.72ns -0.61%
Pmtree::override_range 233.2±3.66µs 237.6±4.68µs +1.89%
Pmtree::set 53.8±1.83µs 56.4±0.38µs +4.83%
Pmtree:delete 53.5±0.61µs 56.4±0.35µs +5.42%
Set/FullMerkleTree::::set/1 563.0±32.05µs 574.4±2.85µs +2.02%
Set/FullMerkleTree::::set/10 5.6±0.31ms 5.8±0.23ms +3.57%
Set/FullMerkleTree::::set/100 56.0±0.24ms 58.1±0.26ms +3.75%
Set/FullMerkleTree::::set_range/1 562.8±26.03µs 581.1±17.98µs +3.25%
Set/FullMerkleTree::::set_range/10 760.4±4.93µs 797.8±89.06µs +4.92%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.4±0.01ms +3.03%
Set/OptimalMerkleTree::::set/1 561.4±3.43µs 579.2±2.60µs +3.17%
Set/OptimalMerkleTree::::set/10 5.6±0.19ms 5.8±0.01ms +3.57%
Set/OptimalMerkleTree::::set/100 56.1±0.16ms 58.0±0.45ms +3.39%
Set/OptimalMerkleTree::::set_range/1 565.5±24.72µs 584.5±35.75µs +3.36%
Set/OptimalMerkleTree::::set_range/10 5.6±0.04ms 5.8±0.10ms +3.57%
Set/OptimalMerkleTree::::set_range/100 56.0±0.10ms 57.9±0.15ms +3.39%
zkey::zkey_from_raw 639.5±2.63ms 682.9±9.04ms +6.79%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 7d745f0

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.1±0.04ms 12.4±0.07ms -5.34%
OptimalMerkleTree::::full_height_gen 571.4±4.09µs 598.2±7.15µs +4.69%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 365.4±3.92ns 373.3±5.90ns +2.16%
Pmtree::get_empty_leaves_indices 8.7±0.17ns 8.7±0.11ns 0.00%
Pmtree::get_subtree_root 520.8±4.19ns 527.4±4.71ns +1.27%
Pmtree::override_range 245.5±6.34µs 239.2±5.76µs -2.57%
Pmtree::set 54.1±0.55µs 56.2±1.00µs +3.88%
Pmtree:delete 54.0±0.48µs 56.2±0.73µs +4.07%
Set/FullMerkleTree::::set/1 554.2±11.30µs 577.3±8.56µs +4.17%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.8±0.01ms +3.57%
Set/FullMerkleTree::::set/100 55.2±0.16ms 57.8±0.11ms +4.71%
Set/FullMerkleTree::::set_range/1 553.8±5.11µs 574.5±2.97µs +3.74%
Set/FullMerkleTree::::set_range/10 765.8±5.84µs 784.2±4.19µs +2.40%
Set/FullMerkleTree::::set_range/100 3.2±0.01ms 3.4±0.02ms +6.25%
Set/OptimalMerkleTree::::set/1 554.5±5.26µs 578.5±3.72µs +4.33%
Set/OptimalMerkleTree::::set/10 5.5±0.01ms 5.8±0.01ms +5.45%
Set/OptimalMerkleTree::::set/100 55.3±0.19ms 58.0±0.11ms +4.88%
Set/OptimalMerkleTree::::set_range/1 552.3±6.74µs 584.7±7.39µs +5.87%
Set/OptimalMerkleTree::::set_range/10 5.5±0.02ms 5.8±0.06ms +5.45%
Set/OptimalMerkleTree::::set_range/100 55.5±0.36ms 58.0±0.36ms +4.50%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.02ms 5.8±0.01ms 0.00%
zkey::zkey_from_raw 634.3±0.77ms 682.8±0.38ms +7.65%

… remove vk_from_raw func, optimize normalize_usize func, use rln_witness_from_values and prepare_verify_input for rln-wasm test
Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 36873ad

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 854.8±7.35ns 855.7±5.98ns +0.11%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.10ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.08ns 3.9±0.05ns +2.63%
FullMerkleTree::override_range 1313.7±10.10ns 1315.5±8.92ns +0.14%
FullMerkleTree::set 863.2±9.07ns 849.7±10.64ns -1.56%
OptimalMerkleTree::compute_root 995.8±6.62ns 1005.5±14.40ns +0.97%
OptimalMerkleTree::delete 991.3±8.03ns 998.2±8.59ns +0.70%
OptimalMerkleTree::get 22.6±0.69ns 22.3±0.23ns -1.33%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.04ns 7.5±0.08ns 0.00%
OptimalMerkleTree::get_subtree_root 23.9±0.23ns 23.6±0.33ns -1.26%
OptimalMerkleTree::override_range 4.1±0.09µs 4.1±0.03µs 0.00%
OptimalMerkleTree::set 989.8±9.05ns 999.8±26.79ns +1.01%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 36873ad

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.7±0.14ms 13.1±0.19ms -4.38%
OptimalMerkleTree::::full_height_gen 583.2±4.62µs 608.9±12.57µs +4.41%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 380.8±5.20ns 373.1±5.58ns -2.02%
Pmtree::get_empty_leaves_indices 8.7±0.13ns 8.7±0.14ns 0.00%
Pmtree::get_subtree_root 539.4±8.28ns 529.0±11.69ns -1.93%
Pmtree::override_range 249.9±3.82µs 243.7±4.67µs -2.48%
Pmtree::set 53.6±1.19µs 56.6±1.14µs +5.60%
Pmtree:delete 53.6±1.13µs 56.6±0.61µs +5.60%
Set/FullMerkleTree::::set/1 561.5±6.97µs 582.8±5.84µs +3.79%
Set/FullMerkleTree::::set/10 5.6±0.02ms 5.8±0.03ms +3.57%
Set/FullMerkleTree::::set/100 56.1±0.15ms 58.1±0.23ms +3.57%
Set/FullMerkleTree::::set_range/1 562.1±9.50µs 580.3±3.30µs +3.24%
Set/FullMerkleTree::::set_range/10 760.2±2.72µs 787.1±5.42µs +3.54%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.4±0.02ms +3.03%
Set/OptimalMerkleTree::::set/1 560.9±6.13µs 583.0±5.41µs +3.94%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.9±0.21ms +5.36%
Set/OptimalMerkleTree::::set/100 56.1±0.31ms 58.3±0.21ms +3.92%
Set/OptimalMerkleTree::::set_range/1 560.6±5.86µs 582.8±6.78µs +3.96%
Set/OptimalMerkleTree::::set_range/10 5.6±0.03ms 5.8±0.04ms +3.57%
Set/OptimalMerkleTree::::set_range/100 56.2±0.22ms 58.3±0.22ms +3.74%
zkey::zkey_from_raw 636.9±0.57ms 678.1±0.50ms +6.47%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 36873ad

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.7±0.13ms 13.0±0.77ms -5.11%
OptimalMerkleTree::::full_height_gen 577.2±4.48µs 602.3±6.87µs +4.35%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 389.5±4.61ns 378.7±9.23ns -2.77%
Pmtree::get_empty_leaves_indices 8.8±0.26ns 8.7±0.08ns -1.14%
Pmtree::get_subtree_root 548.0±6.64ns 512.7±5.96ns -6.44%
Pmtree::override_range 244.4±3.57µs 244.7±5.66µs +0.12%
Pmtree::set 54.9±1.23µs 56.3±0.94µs +2.55%
Pmtree:delete 54.2±0.36µs 56.0±1.03µs +3.32%
Set/FullMerkleTree::::set/1 551.2±4.69µs 585.2±8.49µs +6.17%
Set/FullMerkleTree::::set/10 5.5±0.02ms 5.8±0.01ms +5.45%
Set/FullMerkleTree::::set/100 55.9±0.15ms 58.5±0.83ms +4.65%
Set/FullMerkleTree::::set_range/1 551.6±7.04µs 587.5±4.16µs +6.51%
Set/FullMerkleTree::::set_range/10 761.1±5.06µs 804.0±4.06µs +5.64%
Set/FullMerkleTree::::set_range/100 3.2±0.03ms 3.5±0.01ms +9.38%
Set/OptimalMerkleTree::::set/1 554.3±12.44µs 577.9±3.05µs +4.26%
Set/OptimalMerkleTree::::set/10 5.5±0.02ms 5.8±0.03ms +5.45%
Set/OptimalMerkleTree::::set/100 55.3±0.13ms 57.8±0.11ms +4.52%
Set/OptimalMerkleTree::::set_range/1 552.9±6.92µs 579.0±3.56µs +4.72%
Set/OptimalMerkleTree::::set_range/10 5.5±0.03ms 5.8±0.02ms +5.45%
Set/OptimalMerkleTree::::set_range/100 55.4±0.25ms 57.9±0.20ms +4.51%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.04ms 0.00%
zkey::zkey_from_raw 634.1±0.52ms 684.4±2.04ms +7.93%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 64e1ce9

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 869.2±9.66ns 857.0±6.46ns -1.40%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.10ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.14ns 3.8±0.11ns 0.00%
FullMerkleTree::override_range 1332.6±16.09ns 1333.4±67.92ns +0.06%
FullMerkleTree::set 873.9±8.33ns 866.3±5.95ns -0.87%
OptimalMerkleTree::compute_root 1006.0±6.51ns 1003.7±10.35ns -0.23%
OptimalMerkleTree::delete 1001.7±9.76ns 997.3±12.13ns -0.44%
OptimalMerkleTree::get 22.2±0.57ns 22.3±0.30ns +0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.23ns 7.5±0.09ns 0.00%
OptimalMerkleTree::get_subtree_root 23.7±0.33ns 24.1±0.19ns +1.69%
OptimalMerkleTree::override_range 4.1±0.08µs 4.1±0.03µs 0.00%
OptimalMerkleTree::set 998.6±6.66ns 1014.4±54.41ns +1.58%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 64e1ce9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.1±0.08ms 12.7±0.12ms -3.05%
OptimalMerkleTree::::full_height_gen 584.6±26.28µs 606.9±17.28µs +3.81%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 382.5±4.63ns 373.8±5.92ns -2.27%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 529.6±6.79ns 540.8±16.74ns +2.11%
Pmtree::override_range 246.7±4.68µs 238.7±3.76µs -3.24%
Pmtree::set 54.6±4.74µs 56.8±1.29µs +4.03%
Pmtree:delete 53.4±0.56µs 57.1±3.49µs +6.93%
Set/FullMerkleTree::::set/1 559.4±4.13µs 579.4±6.49µs +3.58%
Set/FullMerkleTree::::set/10 5.6±0.01ms 5.8±0.02ms +3.57%
Set/FullMerkleTree::::set/100 56.3±0.51ms 58.4±0.16ms +3.73%
Set/FullMerkleTree::::set_range/1 561.0±3.85µs 581.6±5.70µs +3.67%
Set/FullMerkleTree::::set_range/10 763.2±6.67µs 784.0±11.85µs +2.73%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.4±0.02ms +3.03%
Set/OptimalMerkleTree::::set/1 565.9±6.28µs 586.3±10.04µs +3.60%
Set/OptimalMerkleTree::::set/10 5.7±0.06ms 5.8±0.03ms +1.75%
Set/OptimalMerkleTree::::set/100 56.4±0.11ms 57.8±0.13ms +2.48%
Set/OptimalMerkleTree::::set_range/1 565.2±6.62µs 584.8±6.61µs +3.47%
Set/OptimalMerkleTree::::set_range/10 5.7±0.01ms 5.8±0.02ms +1.75%
Set/OptimalMerkleTree::::set_range/100 56.3±0.20ms 58.3±0.14ms +3.55%
zkey::zkey_from_raw 641.0±4.03ms 680.9±4.68ms +6.22%

Copy link

github-actions bot commented Apr 4, 2025

Benchmark for 64e1ce9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.08ms 12.9±0.09ms -3.01%
OptimalMerkleTree::::full_height_gen 572.9±3.76µs 598.9±11.77µs +4.54%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 364.2±6.90ns 366.9±3.43ns +0.74%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.07ns 0.00%
Pmtree::get_subtree_root 519.8±6.93ns 532.8±6.92ns +2.50%
Pmtree::override_range 237.7±6.40µs 239.9±3.67µs +0.93%
Pmtree::set 54.0±1.15µs 55.9±0.68µs +3.52%
Pmtree:delete 53.9±0.40µs 56.1±1.19µs +4.08%
Set/FullMerkleTree::::set/1 549.5±5.76µs 575.5±5.76µs +4.73%
Set/FullMerkleTree::::set/10 5.5±0.01ms 5.8±0.01ms +5.45%
Set/FullMerkleTree::::set/100 55.2±0.22ms 57.9±0.07ms +4.89%
Set/FullMerkleTree::::set_range/1 549.2±3.33µs 576.2±5.64µs +4.92%
Set/FullMerkleTree::::set_range/10 751.3±19.84µs 784.4±3.22µs +4.41%
Set/FullMerkleTree::::set_range/100 3.2±0.01ms 3.4±0.01ms +6.25%
Set/OptimalMerkleTree::::set/1 554.1±4.34µs 577.9±8.82µs +4.30%
Set/OptimalMerkleTree::::set/10 5.5±0.06ms 5.8±0.02ms +5.45%
Set/OptimalMerkleTree::::set/100 55.3±0.42ms 57.9±0.15ms +4.70%
Set/OptimalMerkleTree::::set_range/1 551.7±5.33µs 576.2±5.26µs +4.44%
Set/OptimalMerkleTree::::set_range/10 5.5±0.01ms 5.8±0.01ms +5.45%
Set/OptimalMerkleTree::::set_range/100 55.2±0.14ms 57.9±0.24ms +4.89%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.02ms 5.8±0.02ms 0.00%
zkey::zkey_from_raw 637.0±6.23ms 685.9±7.09ms +7.68%

Copy link

github-actions bot commented Apr 7, 2025

Benchmark for 894c64d

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 875.4±12.41ns 869.8±12.27ns -0.64%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.08ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.11ns 3.9±0.09ns +2.63%
FullMerkleTree::override_range 1346.0±19.05ns 1333.8±18.50ns -0.91%
FullMerkleTree::set 874.7±9.31ns 859.4±6.71ns -1.75%
OptimalMerkleTree::compute_root 1007.5±15.92ns 1007.6±12.24ns +0.01%
OptimalMerkleTree::delete 1002.8±13.40ns 1001.4±8.32ns -0.14%
OptimalMerkleTree::get 22.1±0.32ns 22.5±0.36ns +1.81%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.09ns 0.00%
OptimalMerkleTree::get_subtree_root 23.6±0.18ns 24.5±0.25ns +3.81%
OptimalMerkleTree::override_range 4.1±0.10µs 4.1±0.17µs 0.00%
OptimalMerkleTree::set 1002.1±19.41ns 1006.9±42.05ns +0.48%

Copy link

github-actions bot commented Apr 7, 2025

Benchmark for 894c64d

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.12ms 12.8±0.69ms -3.76%
OptimalMerkleTree::::full_height_gen 581.7±9.22µs 601.1±14.63µs +3.34%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 379.8±6.74ns 376.4±35.38ns -0.90%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 530.3±8.65ns 533.5±6.09ns +0.60%
Pmtree::override_range 245.2±4.84µs 241.8±4.85µs -1.39%
Pmtree::set 54.2±2.25µs 56.5±0.64µs +4.24%
Pmtree:delete 53.9±0.65µs 57.2±2.50µs +6.12%
Set/FullMerkleTree::::set/1 562.8±12.93µs 579.4±5.65µs +2.95%
Set/FullMerkleTree::::set/10 5.6±0.02ms 5.8±0.16ms +3.57%
Set/FullMerkleTree::::set/100 56.0±0.11ms 58.2±0.92ms +3.93%
Set/FullMerkleTree::::set_range/1 561.5±9.65µs 578.7±5.58µs +3.06%
Set/FullMerkleTree::::set_range/10 763.9±8.99µs 787.5±5.57µs +3.09%
Set/FullMerkleTree::::set_range/100 3.3±0.09ms 3.4±0.05ms +3.03%
Set/OptimalMerkleTree::::set/1 560.0±5.23µs 580.3±5.47µs +3.63%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.8±0.01ms +3.57%
Set/OptimalMerkleTree::::set/100 56.2±0.61ms 58.0±0.48ms +3.20%
Set/OptimalMerkleTree::::set_range/1 558.8±4.41µs 581.0±5.81µs +3.97%
Set/OptimalMerkleTree::::set_range/10 5.6±0.03ms 5.8±0.01ms +3.57%
Set/OptimalMerkleTree::::set_range/100 56.2±0.14ms 58.3±0.89ms +3.74%
zkey::zkey_from_raw 649.8±12.60ms 678.3±1.14ms +4.39%

Copy link

github-actions bot commented Apr 7, 2025

Benchmark for 894c64d

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.3±0.08ms 14.4±0.18ms +8.27%
OptimalMerkleTree::::full_height_gen 579.0±10.31µs 599.6±9.73µs +3.56%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 373.2±5.49ns 371.6±3.81ns -0.43%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.13ns 0.00%
Pmtree::get_subtree_root 516.2±14.43ns 521.1±7.42ns +0.95%
Pmtree::override_range 244.1±13.46µs 239.9±7.56µs -1.72%
Pmtree::set 54.4±1.44µs 56.6±1.98µs +4.04%
Pmtree:delete 54.1±0.67µs 56.0±0.83µs +3.51%
Set/FullMerkleTree::::set/1 549.5±3.92µs 575.5±4.06µs +4.73%
Set/FullMerkleTree::::set/10 5.5±0.01ms 5.8±0.01ms +5.45%
Set/FullMerkleTree::::set/100 55.1±0.13ms 57.7±0.14ms +4.72%
Set/FullMerkleTree::::set_range/1 550.6±3.02µs 576.9±7.52µs +4.78%
Set/FullMerkleTree::::set_range/10 757.7±47.85µs 786.0±9.78µs +3.73%
Set/FullMerkleTree::::set_range/100 3.2±0.01ms 3.4±0.01ms +6.25%
Set/OptimalMerkleTree::::set/1 553.1±5.01µs 576.5±6.35µs +4.23%
Set/OptimalMerkleTree::::set/10 5.5±0.02ms 5.8±0.01ms +5.45%
Set/OptimalMerkleTree::::set/100 55.2±0.17ms 57.8±0.65ms +4.71%
Set/OptimalMerkleTree::::set_range/1 551.9±7.00µs 576.4±5.48µs +4.44%
Set/OptimalMerkleTree::::set_range/10 5.5±0.02ms 5.8±0.01ms +5.45%
Set/OptimalMerkleTree::::set_range/100 55.2±0.11ms 57.9±0.16ms +4.89%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.00ms 0.00%
zkey::zkey_from_raw 635.7±1.76ms 685.9±6.60ms +7.90%

Copy link

github-actions bot commented Apr 7, 2025

Benchmark for fe7a5fd

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 883.5±56.76ns 865.9±13.18ns -1.99%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.06ns 7.5±0.11ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.08ns 3.8±0.18ns 0.00%
FullMerkleTree::override_range 1347.6±23.65ns 1337.3±14.78ns -0.76%
FullMerkleTree::set 882.3±35.67ns 861.6±11.54ns -2.35%
OptimalMerkleTree::compute_root 1005.6±8.48ns 1005.8±17.08ns +0.02%
OptimalMerkleTree::delete 1001.2±5.87ns 1008.1±63.99ns +0.69%
OptimalMerkleTree::get 22.7±0.51ns 21.9±0.92ns -3.52%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.06ns 7.5±0.07ns 0.00%
OptimalMerkleTree::get_subtree_root 24.0±0.18ns 24.0±0.76ns 0.00%
OptimalMerkleTree::override_range 4.2±0.20µs 4.1±0.06µs -2.38%
OptimalMerkleTree::set 1009.8±61.13ns 998.9±16.34ns -1.08%

Copy link

github-actions bot commented Apr 7, 2025

Benchmark for fe7a5fd

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.4±0.11ms 13.0±0.37ms -2.99%
OptimalMerkleTree::::full_height_gen 587.9±30.23µs 600.6±6.25µs +2.16%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 381.5±6.71ns 387.1±18.59ns +1.47%
Pmtree::get_empty_leaves_indices 8.7±0.10ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 521.0±15.48ns 530.7±10.32ns +1.86%
Pmtree::override_range 251.8±4.34µs 240.7±4.63µs -4.41%
Pmtree::set 54.5±2.26µs 56.9±0.34µs +4.40%
Pmtree:delete 54.5±0.97µs 56.9±2.13µs +4.40%
Set/FullMerkleTree::::set/1 558.7±30.49µs 575.7±2.93µs +3.04%
Set/FullMerkleTree::::set/10 5.5±0.01ms 5.8±0.05ms +5.45%
Set/FullMerkleTree::::set/100 55.7±0.30ms 57.6±0.13ms +3.41%
Set/FullMerkleTree::::set_range/1 561.7±34.93µs 576.5±6.22µs +2.63%
Set/FullMerkleTree::::set_range/10 754.9±5.46µs 786.2±3.57µs +4.15%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.4±0.12ms +3.03%
Set/OptimalMerkleTree::::set/1 558.0±8.13µs 578.3±6.27µs +3.64%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.8±0.08ms +3.57%
Set/OptimalMerkleTree::::set/100 55.6±0.14ms 57.9±0.09ms +4.14%
Set/OptimalMerkleTree::::set_range/1 556.6±6.18µs 578.4±6.14µs +3.92%
Set/OptimalMerkleTree::::set_range/10 5.6±0.02ms 5.8±0.20ms +3.57%
Set/OptimalMerkleTree::::set_range/100 55.6±0.29ms 58.3±1.65ms +4.86%
zkey::zkey_from_raw 639.8±10.00ms 686.4±11.20ms +7.28%

Copy link

github-actions bot commented Apr 7, 2025

Benchmark for fe7a5fd

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.6±0.09ms 13.0±0.13ms -4.41%
OptimalMerkleTree::::full_height_gen 572.5±7.73µs 599.3±5.61µs +4.68%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 371.6±4.30ns 371.6±5.41ns 0.00%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.07ns 0.00%
Pmtree::get_subtree_root 545.6±6.42ns 521.2±7.19ns -4.47%
Pmtree::override_range 245.8±5.59µs 241.9±5.06µs -1.59%
Pmtree::set 54.1±0.95µs 55.8±0.49µs +3.14%
Pmtree:delete 54.0±0.60µs 55.9±0.69µs +3.52%
Set/FullMerkleTree::::set/1 559.2±4.60µs 576.2±5.07µs +3.04%
Set/FullMerkleTree::::set/10 5.6±0.03ms 5.8±0.02ms +3.57%
Set/FullMerkleTree::::set/100 56.0±0.54ms 57.8±0.07ms +3.21%
Set/FullMerkleTree::::set_range/1 559.1±3.98µs 575.6±6.52µs +2.95%
Set/FullMerkleTree::::set_range/10 760.6±3.79µs 785.2±4.63µs +3.23%
Set/FullMerkleTree::::set_range/100 3.3±0.00ms 3.4±0.01ms +3.03%
Set/OptimalMerkleTree::::set/1 570.0±13.36µs 580.0±4.47µs +1.75%
Set/OptimalMerkleTree::::set/10 5.7±0.02ms 5.8±0.01ms +1.75%
Set/OptimalMerkleTree::::set/100 56.9±0.10ms 58.3±0.61ms +2.46%
Set/OptimalMerkleTree::::set_range/1 568.3±5.79µs 579.0±4.13µs +1.88%
Set/OptimalMerkleTree::::set_range/10 5.7±0.03ms 5.8±0.01ms +1.75%
Set/OptimalMerkleTree::::set_range/100 56.8±0.15ms 58.1±0.08ms +2.29%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.02ms 5.8±0.05ms 0.00%
zkey::zkey_from_raw 638.7±0.73ms 684.3±1.43ms +7.14%

Copy link

github-actions bot commented Apr 8, 2025

Benchmark for 6f6c976

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 876.4±41.45ns 863.5±11.02ns -1.47%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.14ns 7.5±0.13ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.36ns 3.9±0.13ns +2.63%
FullMerkleTree::override_range 1333.1±13.10ns 1340.5±13.18ns +0.56%
FullMerkleTree::set 873.8±11.75ns 858.2±7.88ns -1.79%
OptimalMerkleTree::compute_root 1006.1±8.18ns 1003.7±7.09ns -0.24%
OptimalMerkleTree::delete 1001.6±6.88ns 997.8±10.23ns -0.38%
OptimalMerkleTree::get 22.4±0.20ns 22.0±0.22ns -1.79%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.11ns 0.00%
OptimalMerkleTree::get_subtree_root 24.0±0.27ns 24.6±0.36ns +2.50%
OptimalMerkleTree::override_range 4.1±0.10µs 4.1±0.12µs 0.00%
OptimalMerkleTree::set 1001.6±8.77ns 997.2±15.53ns -0.44%

Copy link

github-actions bot commented Apr 8, 2025

Benchmark for 6f6c976

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 14.0±0.25ms 13.5±0.30ms -3.57%
OptimalMerkleTree::::full_height_gen 578.8±9.16µs 604.1±6.40µs +4.37%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 365.7±5.88ns 370.1±4.40ns +1.20%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.14ns 0.00%
Pmtree::get_subtree_root 519.5±8.74ns 534.9±12.48ns +2.96%
Pmtree::override_range 243.1±6.54µs 243.6±4.52µs +0.21%
Pmtree::set 55.1±0.71µs 56.3±2.37µs +2.18%
Pmtree:delete 54.0±0.60µs 56.0±0.50µs +3.70%
Set/FullMerkleTree::::set/1 551.0±6.19µs 576.5±6.62µs +4.63%
Set/FullMerkleTree::::set/10 5.5±0.03ms 5.8±0.01ms +5.45%
Set/FullMerkleTree::::set/100 55.2±0.16ms 57.7±0.50ms +4.53%
Set/FullMerkleTree::::set_range/1 551.6±5.80µs 574.6±5.07µs +4.17%
Set/FullMerkleTree::::set_range/10 755.2±11.44µs 785.8±3.78µs +4.05%
Set/FullMerkleTree::::set_range/100 3.3±0.01ms 3.4±0.04ms +3.03%
Set/OptimalMerkleTree::::set/1 552.6±5.69µs 577.6±4.64µs +4.52%
Set/OptimalMerkleTree::::set/10 5.5±0.02ms 5.8±0.05ms +5.45%
Set/OptimalMerkleTree::::set/100 55.2±0.32ms 57.9±0.25ms +4.89%
Set/OptimalMerkleTree::::set_range/1 551.5±5.60µs 576.8±6.44µs +4.59%
Set/OptimalMerkleTree::::set_range/10 5.5±0.02ms 5.8±0.01ms +5.45%
Set/OptimalMerkleTree::::set_range/100 55.1±0.07ms 57.9±0.17ms +5.08%
arkzkey::arkzkey_from_raw_uncompressed 5.9±0.14ms 5.8±0.02ms -1.69%
zkey::zkey_from_raw 634.1±0.59ms 687.1±5.73ms +8.36%

Copy link

github-actions bot commented Apr 8, 2025

Benchmark for 6f6c976

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 14.3±0.13ms 13.7±0.14ms -4.20%
OptimalMerkleTree::::full_height_gen 583.3±10.50µs 600.2±11.37µs +2.90%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 375.0±5.25ns 385.0±5.70ns +2.67%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 9.0±0.09ns +3.45%
Pmtree::get_subtree_root 521.5±3.40ns 553.4±11.16ns +6.12%
Pmtree::override_range 252.0±5.83µs 247.6±5.11µs -1.75%
Pmtree::set 55.1±2.37µs 56.6±0.53µs +2.72%
Pmtree:delete 54.8±0.97µs 57.3±0.91µs +4.56%
Set/FullMerkleTree::::set/1 558.7±3.21µs 573.1±4.13µs +2.58%
Set/FullMerkleTree::::set/10 5.6±0.02ms 5.8±0.16ms +3.57%
Set/FullMerkleTree::::set/100 56.0±0.35ms 57.7±0.76ms +3.04%
Set/FullMerkleTree::::set_range/1 557.5±5.91µs 574.4±7.60µs +3.03%
Set/FullMerkleTree::::set_range/10 760.3±5.53µs 787.1±14.71µs +3.52%
Set/FullMerkleTree::::set_range/100 3.3±0.02ms 3.4±0.02ms +3.03%
Set/OptimalMerkleTree::::set/1 561.0±16.86µs 574.9±4.83µs +2.48%
Set/OptimalMerkleTree::::set/10 5.6±0.02ms 5.8±0.06ms +3.57%
Set/OptimalMerkleTree::::set/100 56.2±0.18ms 57.6±0.12ms +2.49%
Set/OptimalMerkleTree::::set_range/1 559.9±19.73µs 590.3±59.22µs +5.43%
Set/OptimalMerkleTree::::set_range/10 5.6±0.01ms 5.8±0.02ms +3.57%
Set/OptimalMerkleTree::::set_range/100 56.0±1.23ms 57.6±0.31ms +2.86%
zkey::zkey_from_raw 634.1±0.76ms 679.6±3.02ms +7.18%

Copy link
Collaborator

@seemenkina seemenkina left a comment

Choose a reason for hiding this comment

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

Good work, thank you!

@vinhtc27 vinhtc27 merged commit 9d4198c into master Apr 8, 2025
18 checks passed
@vinhtc27 vinhtc27 deleted the zerokit-wasm-research branch April 8, 2025 06:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants