Skip to content

Enable parallel execution for rln-wasm module #296

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

Open
wants to merge 27 commits into
base: master
Choose a base branch
from

Conversation

vinhtc27
Copy link
Contributor

@vinhtc27 vinhtc27 commented Apr 14, 2025

Changes

  • Enabled parallelism in the browser for rln-wasm with the multithread feature flag.
  • Added browser tests for both single-threaded and multi-threaded modes.
  • Enabled browser tests in the CI workflow.
  • Pending: resolving hanging issue with wasm-bindgen-rayon (comment).
  • Forked this commit into a separate branch, which includes an HTML benchmark file and a test case for the multithreaded feature in rln-wasm.
  • The test case still has the known issue above, so it's temporarily disabled in this PR and will be addressed in the future.
  • Improve the make installdeps which resolves the issue of NVM not enabling Node.js in the current terminal session.
  • Reduce the build size of the .wasm blob using the wasm-opt tool from Binaryen.
  • Maybe we can close this draft PR, which is already very outdated?

Copy link

Benchmark for 0e27fa8

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 890.8±8.68ns 888.3±7.92ns -0.28%
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.10ns 3.8±0.09ns 0.00%
FullMerkleTree::override_range 1366.2±16.05ns 1366.4±38.45ns +0.01%
FullMerkleTree::set 894.2±5.87ns 895.2±6.66ns +0.11%
OptimalMerkleTree::compute_root 1006.1±10.43ns 1006.6±15.06ns +0.05%
OptimalMerkleTree::delete 1003.8±9.58ns 1002.2±9.94ns -0.16%
OptimalMerkleTree::get 21.8±0.27ns 21.9±0.24ns +0.46%
OptimalMerkleTree::get_empty_leaves_indices 7.6±0.75ns 7.5±0.10ns -1.32%
OptimalMerkleTree::get_subtree_root 23.6±0.33ns 23.8±0.19ns +0.85%
OptimalMerkleTree::override_range 4.1±0.03µs 4.1±0.05µs 0.00%
OptimalMerkleTree::set 1003.2±14.10ns 999.9±16.30ns -0.33%

@@ -37,3 +42,4 @@ wasm-bindgen-futures = "0.4.50"
default = ["console_error_panic_hook"]
stateless = ["rln/stateless"]
arkzkey = ["rln/arkzkey"]
rayon-parallelism = ["wasm-bindgen-rayon"]
Copy link
Collaborator

Choose a reason for hiding this comment

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

let's choose a shorter name, like we used to - parallel

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'll come up with a better feature name, but parallel doesn't work because it enables some internal dependency features that aren't supposed to be active.

Copy link
Collaborator

Choose a reason for hiding this comment

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

hm, I got it, then it makes sense to get something else

Copy link

Benchmark for 0e27fa8

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.12ms 12.9±0.09ms -0.77%
OptimalMerkleTree::::full_height_gen 599.1±4.23µs 594.3±4.26µs -0.80%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 387.4±5.23ns 382.5±4.56ns -1.26%
Pmtree::get_empty_leaves_indices 9.0±0.12ns 9.0±0.14ns 0.00%
Pmtree::get_subtree_root 557.6±9.33ns 550.4±7.19ns -1.29%
Pmtree::override_range 239.9±3.11µs 238.8±5.38µs -0.46%
Pmtree::set 56.7±0.55µs 56.5±0.63µs -0.35%
Pmtree:delete 56.4±0.36µs 56.7±1.02µs +0.53%
Set/FullMerkleTree::::set/1 573.5±6.36µs 572.8±4.78µs -0.12%
Set/FullMerkleTree::::set/10 5.7±0.01ms 5.7±0.02ms 0.00%
Set/FullMerkleTree::::set/100 57.6±0.09ms 57.6±0.12ms 0.00%
Set/FullMerkleTree::::set_range/1 580.1±43.01µs 573.2±3.09µs -1.19%
Set/FullMerkleTree::::set_range/10 782.6±4.42µs 778.6±5.86µs -0.51%
Set/FullMerkleTree::::set_range/100 3.4±0.01ms 3.4±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 575.0±4.24µs 578.6±20.55µs +0.63%
Set/OptimalMerkleTree::::set/10 5.8±0.01ms 5.7±0.02ms -1.72%
Set/OptimalMerkleTree::::set/100 57.6±0.21ms 57.6±0.09ms 0.00%
Set/OptimalMerkleTree::::set_range/1 573.9±6.53µs 575.3±3.45µs +0.24%
Set/OptimalMerkleTree::::set_range/10 5.7±0.01ms 5.7±0.12ms 0.00%
Set/OptimalMerkleTree::::set_range/100 57.4±0.06ms 57.5±0.12ms +0.17%
zkey::zkey_from_raw 679.1±2.25ms 679.3±2.48ms +0.03%

Copy link

Benchmark for 0e27fa8

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.4±0.11ms 12.5±0.13ms +0.81%
OptimalMerkleTree::::full_height_gen 598.2±3.81µs 604.8±6.07µs +1.10%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 387.9±4.17ns 377.9±4.46ns -2.58%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.08ns 0.00%
Pmtree::get_subtree_root 564.8±4.39ns 542.0±6.29ns -4.04%
Pmtree::override_range 242.6±7.10µs 236.1±3.97µs -2.68%
Pmtree::set 56.3±0.52µs 56.4±1.33µs +0.18%
Pmtree:delete 56.3±0.34µs 56.1±0.39µs -0.36%
Set/FullMerkleTree::::set/1 577.3±3.89µs 575.7±3.81µs -0.28%
Set/FullMerkleTree::::set/10 5.8±0.01ms 5.8±0.06ms 0.00%
Set/FullMerkleTree::::set/100 57.9±0.12ms 58.4±1.95ms +0.86%
Set/FullMerkleTree::::set_range/1 580.2±3.19µs 579.6±2.14µs -0.10%
Set/FullMerkleTree::::set_range/10 788.5±3.19µs 785.1±5.75µs -0.43%
Set/FullMerkleTree::::set_range/100 3.4±0.02ms 3.4±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 581.2±3.86µs 581.0±3.92µs -0.03%
Set/OptimalMerkleTree::::set/10 5.8±0.01ms 5.8±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 58.2±0.19ms 58.1±0.24ms -0.17%
Set/OptimalMerkleTree::::set_range/1 581.7±4.21µs 582.8±7.47µs +0.19%
Set/OptimalMerkleTree::::set_range/10 5.8±0.01ms 5.8±0.01ms 0.00%
Set/OptimalMerkleTree::::set_range/100 58.2±0.15ms 58.1±0.12ms -0.17%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.04ms 0.00%
zkey::zkey_from_raw 681.1±0.61ms 682.2±1.24ms +0.16%

Copy link

Benchmark for 0431902

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 893.0±5.39ns 888.6±7.70ns -0.49%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.07ns 7.5±0.06ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.14ns 3.9±0.05ns +2.63%
FullMerkleTree::override_range 1368.9±11.90ns 1361.9±13.57ns -0.51%
FullMerkleTree::set 886.9±4.64ns 896.1±9.21ns +1.04%
OptimalMerkleTree::compute_root 1029.6±21.77ns 1019.7±16.43ns -0.96%
OptimalMerkleTree::delete 1006.9±11.61ns 1011.2±10.28ns +0.43%
OptimalMerkleTree::get 21.8±0.20ns 22.0±0.21ns +0.92%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.07ns 7.5±0.12ns 0.00%
OptimalMerkleTree::get_subtree_root 23.5±0.40ns 23.8±0.50ns +1.28%
OptimalMerkleTree::override_range 4.1±0.03µs 4.1±0.06µs 0.00%
OptimalMerkleTree::set 1016.3±10.95ns 1026.7±59.73ns +1.02%

Copy link

Benchmark for 0431902

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.09ms 12.9±0.13ms -0.77%
OptimalMerkleTree::::full_height_gen 597.9±3.66µs 596.4±4.40µs -0.25%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 390.0±5.53ns 380.9±8.28ns -2.33%
Pmtree::get_empty_leaves_indices 9.1±0.44ns 9.0±0.12ns -1.10%
Pmtree::get_subtree_root 546.6±6.56ns 550.2±4.80ns +0.66%
Pmtree::override_range 237.5±4.07µs 238.1±7.89µs +0.25%
Pmtree::set 56.4±0.59µs 56.5±0.55µs +0.18%
Pmtree:delete 56.7±2.01µs 56.9±0.61µs +0.35%
Set/FullMerkleTree::::set/1 579.9±23.76µs 573.9±5.94µs -1.03%
Set/FullMerkleTree::::set/10 5.7±0.01ms 5.7±0.02ms 0.00%
Set/FullMerkleTree::::set/100 57.5±0.13ms 57.6±0.16ms +0.17%
Set/FullMerkleTree::::set_range/1 571.5±2.78µs 575.7±11.38µs +0.73%
Set/FullMerkleTree::::set_range/10 778.3±5.65µs 781.0±19.15µs +0.35%
Set/FullMerkleTree::::set_range/100 3.4±0.03ms 3.4±0.17ms 0.00%
Set/OptimalMerkleTree::::set/1 572.6±2.66µs 572.2±3.70µs -0.07%
Set/OptimalMerkleTree::::set/10 5.7±0.01ms 5.7±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 57.5±0.16ms 57.7±1.40ms +0.35%
Set/OptimalMerkleTree::::set_range/1 574.8±4.59µs 572.9±3.95µs -0.33%
Set/OptimalMerkleTree::::set_range/10 5.7±0.03ms 5.8±0.16ms +1.75%
Set/OptimalMerkleTree::::set_range/100 57.7±0.13ms 58.1±2.63ms +0.69%
zkey::zkey_from_raw 678.4±1.11ms 682.2±6.89ms +0.56%

Copy link

Benchmark for 0431902

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.8±0.18ms 12.8±0.15ms 0.00%
OptimalMerkleTree::::full_height_gen 601.5±6.30µs 598.0±5.59µs -0.58%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 384.4±4.21ns 374.7±8.36ns -2.52%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.09ns 0.00%
Pmtree::get_subtree_root 552.2±4.76ns 537.7±5.07ns -2.63%
Pmtree::override_range 238.9±3.97µs 250.0±4.58µs +4.65%
Pmtree::set 56.5±0.67µs 56.3±0.52µs -0.35%
Pmtree:delete 56.8±1.82µs 56.4±1.33µs -0.70%
Set/FullMerkleTree::::set/1 575.9±7.21µs 578.8±3.31µs +0.50%
Set/FullMerkleTree::::set/10 5.8±0.21ms 5.8±0.03ms 0.00%
Set/FullMerkleTree::::set/100 58.2±0.16ms 58.1±0.11ms -0.17%
Set/FullMerkleTree::::set_range/1 580.9±6.45µs 579.3±2.59µs -0.28%
Set/FullMerkleTree::::set_range/10 786.0±3.43µs 788.4±3.16µs +0.31%
Set/FullMerkleTree::::set_range/100 3.4±0.01ms 3.4±0.00ms 0.00%
Set/OptimalMerkleTree::::set/1 581.3±15.72µs 579.7±6.27µs -0.28%
Set/OptimalMerkleTree::::set/10 5.8±0.01ms 5.8±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 58.3±0.09ms 57.8±0.18ms -0.86%
Set/OptimalMerkleTree::::set_range/1 579.7±3.14µs 578.6±15.89µs -0.19%
Set/OptimalMerkleTree::::set_range/10 5.8±0.01ms 5.7±0.02ms -1.72%
Set/OptimalMerkleTree::::set_range/100 58.2±0.10ms 58.2±0.42ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.04ms 0.00%
zkey::zkey_from_raw 681.6±1.21ms 682.3±3.34ms +0.10%

…ser-compatible witness calculators; fix Makefile.toml; thread pool works in HTML but not in wasm-bindgen-test
Copy link

Benchmark for 3a210a3

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 888.0±12.06ns 910.8±8.45ns +2.57%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.5±0.04ns 7.5±0.11ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.17ns 3.7±0.14ns -2.63%
FullMerkleTree::override_range 1363.0±16.07ns 1369.7±17.06ns +0.49%
FullMerkleTree::set 895.1±9.83ns 905.8±14.05ns +1.20%
OptimalMerkleTree::compute_root 1019.4±10.58ns 1024.7±37.76ns +0.52%
OptimalMerkleTree::delete 1002.2±7.76ns 1001.0±8.21ns -0.12%
OptimalMerkleTree::get 22.0±0.29ns 21.9±0.38ns -0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.09ns 7.5±0.31ns 0.00%
OptimalMerkleTree::get_subtree_root 23.8±0.35ns 23.5±0.28ns -1.26%
OptimalMerkleTree::override_range 4.1±0.03µs 4.1±0.10µs 0.00%
OptimalMerkleTree::set 1003.1±13.59ns 1004.8±15.23ns +0.17%

Copy link

Benchmark for 3a210a3

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.32ms 12.9±0.24ms -0.77%
OptimalMerkleTree::::full_height_gen 594.7±5.11µs 597.9±6.92µs +0.54%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 392.5±4.77ns 382.2±3.95ns -2.62%
Pmtree::get_empty_leaves_indices 9.0±0.09ns 9.1±0.82ns +1.11%
Pmtree::get_subtree_root 547.8±6.66ns 539.7±4.48ns -1.48%
Pmtree::override_range 239.8±7.29µs 241.1±6.90µs +0.54%
Pmtree::set 56.7±0.56µs 56.4±0.37µs -0.53%
Pmtree:delete 57.0±2.93µs 56.6±0.50µs -0.70%
Set/FullMerkleTree::::set/1 572.7±5.07µs 572.9±4.27µs +0.03%
Set/FullMerkleTree::::set/10 5.7±0.01ms 5.7±0.03ms 0.00%
Set/FullMerkleTree::::set/100 57.5±0.22ms 57.3±0.17ms -0.35%
Set/FullMerkleTree::::set_range/1 573.4±3.34µs 581.0±12.48µs +1.33%
Set/FullMerkleTree::::set_range/10 780.3±5.00µs 780.0±7.58µs -0.04%
Set/FullMerkleTree::::set_range/100 3.4±0.00ms 3.4±0.02ms 0.00%
Set/OptimalMerkleTree::::set/1 572.3±2.92µs 574.0±6.72µs +0.30%
Set/OptimalMerkleTree::::set/10 5.7±0.01ms 5.8±0.01ms +1.75%
Set/OptimalMerkleTree::::set/100 57.4±0.14ms 57.7±0.09ms +0.52%
Set/OptimalMerkleTree::::set_range/1 573.8±6.26µs 573.4±4.53µs -0.07%
Set/OptimalMerkleTree::::set_range/10 5.7±0.02ms 5.7±0.00ms 0.00%
Set/OptimalMerkleTree::::set_range/100 57.6±0.14ms 57.8±0.20ms +0.35%
zkey::zkey_from_raw 678.1±0.64ms 691.2±12.53ms +1.93%

Copy link

Benchmark for 3a210a3

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.4±0.10ms 12.8±0.13ms +3.23%
OptimalMerkleTree::::full_height_gen 597.0±4.20µs 601.3±7.41µs +0.72%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 391.4±5.03ns 389.9±5.41ns -0.38%
Pmtree::get_empty_leaves_indices 8.7±0.09ns 8.7±0.13ns 0.00%
Pmtree::get_subtree_root 565.6±5.94ns 555.6±6.54ns -1.77%
Pmtree::override_range 236.0±7.69µs 239.8±3.55µs +1.61%
Pmtree::set 56.4±0.47µs 56.6±1.31µs +0.35%
Pmtree:delete 56.4±0.47µs 56.4±0.57µs 0.00%
Set/FullMerkleTree::::set/1 586.0±25.66µs 583.7±19.35µs -0.39%
Set/FullMerkleTree::::set/10 5.8±0.05ms 5.8±0.01ms 0.00%
Set/FullMerkleTree::::set/100 58.4±0.14ms 58.2±0.20ms -0.34%
Set/FullMerkleTree::::set_range/1 577.6±8.86µs 581.1±3.19µs +0.61%
Set/FullMerkleTree::::set_range/10 786.1±3.20µs 787.9±5.36µs +0.23%
Set/FullMerkleTree::::set_range/100 3.4±0.01ms 3.4±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 579.9±4.13µs 580.9±3.58µs +0.17%
Set/OptimalMerkleTree::::set/10 5.8±0.02ms 5.8±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 58.1±0.18ms 58.3±0.24ms +0.34%
Set/OptimalMerkleTree::::set_range/1 581.0±2.50µs 580.4±5.23µs -0.10%
Set/OptimalMerkleTree::::set_range/10 5.8±0.05ms 5.8±0.05ms 0.00%
Set/OptimalMerkleTree::::set_range/100 58.1±0.12ms 58.2±0.09ms +0.17%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.03ms 5.8±0.13ms 0.00%
zkey::zkey_from_raw 681.1±0.29ms 682.4±2.84ms +0.19%

Copy link

Benchmark for ade70ad

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 880.0±4.00ns 869.5±9.64ns -1.19%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.13ns 7.8±0.11ns 0.00%
FullMerkleTree::get_subtree_root 3.6±0.20ns 3.8±0.15ns +5.56%
FullMerkleTree::override_range 1361.7±16.76ns 1356.4±16.85ns -0.39%
FullMerkleTree::set 874.7±11.86ns 880.1±7.99ns +0.62%
OptimalMerkleTree::compute_root 1000.6±11.15ns 999.8±9.75ns -0.08%
OptimalMerkleTree::delete 1007.9±13.36ns 1010.7±10.12ns +0.28%
OptimalMerkleTree::get 22.4±0.20ns 22.2±0.47ns -0.89%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.06ns 7.5±0.09ns 0.00%
OptimalMerkleTree::get_subtree_root 24.0±0.21ns 24.2±0.28ns +0.83%
OptimalMerkleTree::override_range 1157.1±28.30ns 1149.5±13.86ns -0.66%
OptimalMerkleTree::set 1003.7±11.46ns 1012.6±30.19ns +0.89%

Copy link

Benchmark for ade70ad

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.8±0.19ms 13.0±0.09ms +1.56%
OptimalMerkleTree::::full_height_gen 823.8±8.97µs 806.4±11.21µs -2.11%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 395.7±11.10ns 376.9±6.83ns -4.75%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.18ns 0.00%
Pmtree::get_subtree_root 546.4±15.82ns 542.0±9.45ns -0.81%
Pmtree::override_range 233.2±3.15µs 235.7±9.36µs +1.07%
Pmtree::set 51.5±1.28µs 51.2±0.53µs -0.58%
Pmtree:delete 51.5±0.88µs 51.7±2.98µs +0.39%
Set/FullMerkleTree::::set/1 525.4±4.92µs 526.9±16.51µs +0.29%
Set/FullMerkleTree::::set/10 5.3±0.18ms 5.3±0.01ms 0.00%
Set/FullMerkleTree::::set/100 52.7±0.25ms 52.7±0.13ms 0.00%
Set/FullMerkleTree::::set_range/1 525.2±2.64µs 528.7±15.66µs +0.67%
Set/FullMerkleTree::::set_range/10 719.0±4.46µs 719.4±6.40µs +0.06%
Set/FullMerkleTree::::set_range/100 3.1±0.03ms 3.2±0.11ms +3.23%
Set/OptimalMerkleTree::::set/1 526.6±3.82µs 526.6±4.40µs 0.00%
Set/OptimalMerkleTree::::set/10 5.4±0.01ms 5.4±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 54.6±1.28ms 54.3±0.53ms -0.55%
Set/OptimalMerkleTree::::set_range/1 526.4±4.07µs 528.4±6.63µs +0.38%
Set/OptimalMerkleTree::::set_range/10 723.4±19.53µs 721.6±4.63µs -0.25%
Set/OptimalMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
zkey::zkey_from_raw 678.5±0.91ms 679.5±2.18ms +0.15%

Copy link

Benchmark for 1650689

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 884.2±46.70ns 875.5±10.37ns -0.98%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.12ns 7.8±0.11ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.20ns 3.7±0.22ns -2.63%
FullMerkleTree::override_range 1369.5±63.78ns 1367.7±28.97ns -0.13%
FullMerkleTree::set 881.4±19.49ns 871.4±16.20ns -1.13%
OptimalMerkleTree::compute_root 1008.4±33.01ns 1006.2±35.52ns -0.22%
OptimalMerkleTree::delete 1015.9±17.85ns 1007.9±8.85ns -0.79%
OptimalMerkleTree::get 22.3±0.37ns 22.4±0.26ns +0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.14ns 7.5±0.11ns 0.00%
OptimalMerkleTree::get_subtree_root 24.4±0.33ns 24.1±0.37ns -1.23%
OptimalMerkleTree::override_range 1159.8±14.70ns 1159.2±27.14ns -0.05%
OptimalMerkleTree::set 1036.0±7.79ns 1004.9±10.69ns -3.00%

Copy link

Benchmark for ade70ad

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.2±0.17ms 13.2±0.16ms 0.00%
OptimalMerkleTree::::full_height_gen 815.1±9.39µs 816.7±7.45µs +0.20%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 365.7±7.19ns 365.9±7.57ns +0.05%
Pmtree::get_empty_leaves_indices 8.7±0.14ns 8.7±0.09ns 0.00%
Pmtree::get_subtree_root 527.3±4.07ns 524.8±7.13ns -0.47%
Pmtree::override_range 231.8±4.03µs 234.5±5.99µs +1.16%
Pmtree::set 50.8±0.50µs 51.1±1.34µs +0.59%
Pmtree:delete 50.8±0.40µs 51.2±0.39µs +0.79%
Set/FullMerkleTree::::set/1 522.2±4.30µs 519.3±3.96µs -0.56%
Set/FullMerkleTree::::set/10 5.2±0.02ms 5.2±0.01ms 0.00%
Set/FullMerkleTree::::set/100 52.4±0.10ms 52.3±0.16ms -0.19%
Set/FullMerkleTree::::set_range/1 521.2±3.70µs 517.6±5.23µs -0.69%
Set/FullMerkleTree::::set_range/10 712.6±22.23µs 710.4±2.99µs -0.31%
Set/FullMerkleTree::::set_range/100 3.1±0.02ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 521.5±4.87µs 523.6±5.09µs +0.40%
Set/OptimalMerkleTree::::set/10 5.4±0.01ms 5.4±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 54.0±0.85ms 53.8±0.13ms -0.37%
Set/OptimalMerkleTree::::set_range/1 521.4±3.88µs 522.6±5.55µs +0.23%
Set/OptimalMerkleTree::::set_range/10 713.5±7.37µs 717.2±18.08µs +0.52%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.03ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.02ms 0.00%
zkey::zkey_from_raw 681.1±0.26ms 681.5±0.50ms +0.06%

Copy link

Benchmark for 1650689

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.09ms 12.9±0.10ms +2.38%
OptimalMerkleTree::::full_height_gen 795.8±6.36µs 813.1±10.81µs +2.17%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 384.9±6.21ns 375.4±4.29ns -2.47%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 559.9±7.37ns 543.3±22.35ns -2.96%
Pmtree::override_range 228.7±4.60µs 229.6±8.80µs +0.39%
Pmtree::set 51.4±0.54µs 51.2±0.61µs -0.39%
Pmtree:delete 51.2±0.43µs 51.3±0.53µs +0.20%
Set/FullMerkleTree::::set/1 530.8±43.13µs 526.5±3.94µs -0.81%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.3±0.04ms +1.92%
Set/FullMerkleTree::::set/100 52.8±0.12ms 52.8±0.09ms 0.00%
Set/FullMerkleTree::::set_range/1 525.7±4.18µs 525.8±4.83µs +0.02%
Set/FullMerkleTree::::set_range/10 721.3±12.77µs 723.5±2.84µs +0.31%
Set/FullMerkleTree::::set_range/100 3.1±0.00ms 3.2±0.01ms +3.23%
Set/OptimalMerkleTree::::set/1 526.9±3.76µs 527.3±2.99µs +0.08%
Set/OptimalMerkleTree::::set/10 5.4±0.15ms 5.5±0.25ms +1.85%
Set/OptimalMerkleTree::::set/100 54.5±0.24ms 54.3±0.11ms -0.37%
Set/OptimalMerkleTree::::set_range/1 526.7±4.36µs 528.8±7.37µs +0.40%
Set/OptimalMerkleTree::::set_range/10 723.0±15.96µs 722.7±4.71µs -0.04%
Set/OptimalMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
zkey::zkey_from_raw 678.3±0.39ms 685.4±11.26ms +1.05%

Copy link

Benchmark for 1650689

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.9±0.10ms 12.8±0.19ms -0.78%
OptimalMerkleTree::::full_height_gen 810.7±3.30µs 812.7±9.60µs +0.25%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 369.1±4.77ns 369.8±7.07ns +0.19%
Pmtree::get_empty_leaves_indices 8.7±0.20ns 8.7±0.11ns 0.00%
Pmtree::get_subtree_root 520.9±6.92ns 522.7±6.69ns +0.35%
Pmtree::override_range 229.9±3.69µs 231.3±5.20µs +0.61%
Pmtree::set 50.8±0.58µs 50.9±1.01µs +0.20%
Pmtree:delete 50.9±0.81µs 51.1±0.38µs +0.39%
Set/FullMerkleTree::::set/1 520.8±4.67µs 520.8±4.26µs 0.00%
Set/FullMerkleTree::::set/10 5.2±0.02ms 5.2±0.01ms 0.00%
Set/FullMerkleTree::::set/100 52.3±0.29ms 52.2±0.13ms -0.19%
Set/FullMerkleTree::::set_range/1 520.0±5.26µs 521.9±4.70µs +0.37%
Set/FullMerkleTree::::set_range/10 709.8±2.98µs 711.0±3.22µs +0.17%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.03ms 0.00%
Set/OptimalMerkleTree::::set/1 521.0±3.17µs 522.3±5.42µs +0.25%
Set/OptimalMerkleTree::::set/10 5.4±0.03ms 5.4±0.04ms 0.00%
Set/OptimalMerkleTree::::set/100 53.7±0.11ms 53.8±0.99ms +0.19%
Set/OptimalMerkleTree::::set_range/1 521.4±5.03µs 521.8±2.64µs +0.08%
Set/OptimalMerkleTree::::set_range/10 714.6±20.21µs 713.3±6.52µs -0.18%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.00ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.9±0.08ms 5.9±0.00ms 0.00%
zkey::zkey_from_raw 681.9±0.37ms 684.1±5.09ms +0.32%

Copy link

Benchmark for 7160c42

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 869.2±7.50ns 869.4±12.38ns +0.02%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.07ns 7.8±0.11ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.10ns 3.8±0.08ns 0.00%
FullMerkleTree::override_range 1347.4±11.36ns 1352.1±39.55ns +0.35%
FullMerkleTree::set 880.1±19.21ns 879.3±11.15ns -0.09%
OptimalMerkleTree::compute_root 1018.6±10.88ns 1001.7±11.02ns -1.66%
OptimalMerkleTree::delete 1063.9±141.15ns 1017.3±24.13ns -4.38%
OptimalMerkleTree::get 22.3±0.23ns 22.2±0.51ns -0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.13ns 0.00%
OptimalMerkleTree::get_subtree_root 24.2±0.29ns 24.2±0.31ns 0.00%
OptimalMerkleTree::override_range 1150.7±14.98ns 1168.3±55.21ns +1.53%
OptimalMerkleTree::set 1027.1±11.20ns 1021.8±22.13ns -0.52%

Copy link

Benchmark for 7160c42

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.5±0.18ms 13.0±0.27ms +4.00%
OptimalMerkleTree::::full_height_gen 812.7±5.59µs 794.8±5.32µs -2.20%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 381.5±4.80ns 377.5±4.76ns -1.05%
Pmtree::get_empty_leaves_indices 8.8±0.53ns 8.7±0.10ns -1.14%
Pmtree::get_subtree_root 546.7±14.52ns 545.7±7.87ns -0.18%
Pmtree::override_range 228.2±4.48µs 241.4±5.67µs +5.78%
Pmtree::set 51.2±0.47µs 51.6±1.61µs +0.78%
Pmtree:delete 51.5±0.56µs 51.4±0.44µs -0.19%
Set/FullMerkleTree::::set/1 524.3±4.92µs 524.9±3.34µs +0.11%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.3±0.03ms +1.92%
Set/FullMerkleTree::::set/100 52.9±0.14ms 53.3±2.42ms +0.76%
Set/FullMerkleTree::::set_range/1 523.8±4.07µs 526.2±5.17µs +0.46%
Set/FullMerkleTree::::set_range/10 722.3±17.22µs 718.9±3.98µs -0.47%
Set/FullMerkleTree::::set_range/100 3.1±0.03ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 527.0±4.41µs 524.6±5.48µs -0.46%
Set/OptimalMerkleTree::::set/10 5.4±0.05ms 5.4±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 54.6±0.58ms 54.6±1.59ms 0.00%
Set/OptimalMerkleTree::::set_range/1 528.7±24.43µs 526.5±4.89µs -0.42%
Set/OptimalMerkleTree::::set_range/10 721.2±7.98µs 720.4±2.47µs -0.11%
Set/OptimalMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
zkey::zkey_from_raw 681.3±5.90ms 681.7±1.40ms +0.06%

Copy link

Benchmark for 7160c42

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.11ms 12.5±0.13ms -0.79%
OptimalMerkleTree::::full_height_gen 811.1±10.47µs 811.9±32.76µs +0.10%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 364.4±4.90ns 364.6±4.15ns +0.05%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.8±0.43ns +1.15%
Pmtree::get_subtree_root 525.3±6.16ns 525.6±4.98ns +0.06%
Pmtree::override_range 230.7±4.76µs 229.0±5.54µs -0.74%
Pmtree::set 51.0±0.47µs 51.5±2.64µs +0.98%
Pmtree:delete 50.8±0.46µs 50.9±0.39µs +0.20%
Set/FullMerkleTree::::set/1 519.0±3.36µs 518.1±3.43µs -0.17%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.2±0.05ms 0.00%
Set/FullMerkleTree::::set/100 52.4±1.34ms 52.2±0.11ms -0.38%
Set/FullMerkleTree::::set_range/1 517.6±2.89µs 523.4±18.36µs +1.12%
Set/FullMerkleTree::::set_range/10 710.4±5.00µs 709.6±5.33µs -0.11%
Set/FullMerkleTree::::set_range/100 3.1±0.02ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 521.4±3.25µs 523.1±2.76µs +0.33%
Set/OptimalMerkleTree::::set/10 5.3±0.02ms 5.3±0.04ms 0.00%
Set/OptimalMerkleTree::::set/100 53.9±0.59ms 53.8±0.12ms -0.19%
Set/OptimalMerkleTree::::set_range/1 523.8±9.54µs 522.7±3.47µs -0.21%
Set/OptimalMerkleTree::::set_range/10 712.1±4.38µs 713.3±3.62µs +0.17%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.01ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.7±0.02ms -1.72%
zkey::zkey_from_raw 685.2±12.11ms 683.9±5.62ms -0.19%

Copy link

Benchmark for 147e66c

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 884.6±5.00ns 873.4±7.88ns -1.27%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.08ns 7.7±0.11ns -1.28%
FullMerkleTree::get_subtree_root 5.5±0.04ns 3.8±0.13ns -30.91%
FullMerkleTree::override_range 1371.9±27.92ns 1351.8±15.56ns -1.47%
FullMerkleTree::set 869.4±8.84ns 875.5±5.19ns +0.70%
OptimalMerkleTree::compute_root 1000.2±7.24ns 1008.9±22.79ns +0.87%
OptimalMerkleTree::delete 1007.5±4.77ns 1014.0±15.33ns +0.65%
OptimalMerkleTree::get 22.7±0.15ns 22.3±0.26ns -1.76%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.12ns 7.5±0.09ns 0.00%
OptimalMerkleTree::get_subtree_root 24.0±0.20ns 24.4±0.40ns +1.67%
OptimalMerkleTree::override_range 1154.1±10.18ns 1163.6±43.50ns +0.82%
OptimalMerkleTree::set 1002.2±7.38ns 1014.3±27.05ns +1.21%
poseidon Fr/Array hash/10 139.2±0.14µs 70.2 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1501.9±2.13µs 65.0 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.2±0.03ms 64.4 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.02µs 69.1 MElem/sec N/A N/A

Copy link

Benchmark for b60ee07

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.4±0.09ms 12.6±0.10ms +1.61%
OptimalMerkleTree::::full_height_gen 804.3±6.34µs 809.2±36.54µs +0.61%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 382.9±5.51ns 374.9±13.65ns -2.09%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.11ns 0.00%
Pmtree::get_subtree_root 539.3±12.34ns 555.9±4.91ns +3.08%
Pmtree::override_range 228.5±6.00µs 230.2±4.10µs +0.74%
Pmtree::set 50.3±2.40µs 50.5±1.46µs +0.40%
Pmtree:delete 50.0±0.44µs 50.3±0.42µs +0.60%
Set/FullMerkleTree::::set/1 514.2±3.28µs 518.1±2.90µs +0.76%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.2±0.00ms +1.96%
Set/FullMerkleTree::::set/100 51.7±0.12ms 52.1±0.16ms +0.77%
Set/FullMerkleTree::::set_range/1 513.7±2.81µs 517.0±2.87µs +0.64%
Set/FullMerkleTree::::set_range/10 707.8±34.50µs 710.1±3.59µs +0.32%
Set/FullMerkleTree::::set_range/100 3.1±0.03ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 514.5±2.76µs 515.6±4.53µs +0.21%
Set/OptimalMerkleTree::::set/10 5.3±0.17ms 5.3±0.04ms 0.00%
Set/OptimalMerkleTree::::set/100 53.2±0.13ms 53.3±0.17ms +0.19%
Set/OptimalMerkleTree::::set_range/1 519.3±22.10µs 522.0±13.42µs +0.52%
Set/OptimalMerkleTree::::set_range/10 704.8±4.15µs 705.7±4.03µs +0.13%
Set/OptimalMerkleTree::::set_range/100 3.0±0.00ms 3.0±0.01ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.07ms 5.8±0.01ms 0.00%
zkey::zkey_from_raw 681.4±0.47ms 684.9±5.79ms +0.51%

Copy link

Benchmark for 147e66c

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.5±0.13ms 12.4±0.10ms -0.80%
OptimalMerkleTree::::full_height_gen 785.6±6.76µs 794.0±15.23µs +1.07%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 383.6±4.58ns 376.8±4.05ns -1.77%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.16ns 0.00%
Pmtree::get_subtree_root 543.5±8.56ns 546.1±15.25ns +0.48%
Pmtree::override_range 226.4±4.30µs 227.3±6.90µs +0.40%
Pmtree::set 50.6±0.26µs 50.7±0.53µs +0.20%
Pmtree:delete 50.6±0.54µs 50.7±0.44µs +0.20%
Set/FullMerkleTree::::set/1 514.6±5.56µs 514.6±4.76µs 0.00%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.2±0.09ms 0.00%
Set/FullMerkleTree::::set/100 51.7±0.34ms 51.7±0.14ms 0.00%
Set/FullMerkleTree::::set_range/1 513.6±2.41µs 514.4±4.44µs +0.16%
Set/FullMerkleTree::::set_range/10 703.0±5.22µs 704.0±4.06µs +0.14%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.00ms 0.00%
Set/OptimalMerkleTree::::set/1 514.8±4.31µs 520.5±27.69µs +1.11%
Set/OptimalMerkleTree::::set/10 5.3±0.01ms 5.3±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 53.3±1.05ms 53.4±0.38ms +0.19%
Set/OptimalMerkleTree::::set_range/1 514.6±4.42µs 515.2±3.46µs +0.12%
Set/OptimalMerkleTree::::set_range/10 704.3±4.42µs 707.4±6.03µs +0.44%
Set/OptimalMerkleTree::::set_range/100 3.0±0.00ms 3.0±0.03ms 0.00%
zkey::zkey_from_raw 678.1±0.69ms 679.2±2.39ms +0.16%

Copy link

Benchmark for 147e66c

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.46ms 12.3±0.06ms -2.38%
OptimalMerkleTree::::full_height_gen 798.6±7.01µs 803.2±19.03µs +0.58%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 372.2±2.74ns 376.4±1.82ns +1.13%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 8.7±0.15ns 0.00%
Pmtree::get_subtree_root 577.7±7.10ns 537.9±8.96ns -6.89%
Pmtree::override_range 224.0±4.34µs 224.0±2.96µs 0.00%
Pmtree::set 54.3±0.28µs 50.7±2.09µs -6.63%
Pmtree:delete 52.1±0.51µs 50.3±0.60µs -3.45%
Set/FullMerkleTree::::set/1 513.6±4.82µs 514.0±2.41µs +0.08%
Set/FullMerkleTree::::set/10 5.1±0.00ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.7±0.15ms 51.7±0.15ms 0.00%
Set/FullMerkleTree::::set_range/1 513.7±4.72µs 514.0±4.59µs +0.06%
Set/FullMerkleTree::::set_range/10 703.5±5.98µs 702.7±2.11µs -0.11%
Set/FullMerkleTree::::set_range/100 3.1±0.02ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 514.7±2.55µs 514.7±3.06µs 0.00%
Set/OptimalMerkleTree::::set/10 5.3±0.02ms 5.3±0.07ms 0.00%
Set/OptimalMerkleTree::::set/100 53.2±0.25ms 53.2±0.11ms 0.00%
Set/OptimalMerkleTree::::set_range/1 514.6±3.23µs 517.0±13.82µs +0.47%
Set/OptimalMerkleTree::::set_range/10 705.5±2.72µs 705.8±9.59µs +0.04%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.02ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.7±0.00ms 5.7±0.02ms 0.00%
zkey::zkey_from_raw 681.6±1.14ms 681.9±0.56ms +0.04%

Copy link

Benchmark for 3aafbb6

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 894.6±11.17ns 871.4±7.17ns -2.59%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.12ns 7.8±0.11ns 0.00%
FullMerkleTree::get_subtree_root 3.7±0.18ns 3.8±0.11ns +2.70%
FullMerkleTree::override_range 1404.3±16.97ns 1384.9±17.65ns -1.38%
FullMerkleTree::set 873.4±10.30ns 880.9±6.95ns +0.86%
OptimalMerkleTree::compute_root 1001.4±13.07ns 1001.3±13.49ns -0.01%
OptimalMerkleTree::delete 1006.5±7.61ns 1021.4±25.23ns +1.48%
OptimalMerkleTree::get 22.5±0.23ns 22.1±0.23ns -1.78%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.09ns 7.5±0.13ns 0.00%
OptimalMerkleTree::get_subtree_root 24.7±0.21ns 24.7±0.32ns 0.00%
OptimalMerkleTree::override_range 1169.8±13.48ns 1170.0±16.96ns +0.02%
OptimalMerkleTree::set 1004.2±10.23ns 1020.1±85.00ns +1.58%
poseidon Fr/Array hash/10 139.2±0.14µs 70.2 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1503.8±2.61µs 64.9 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.2±0.05ms 64.4 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.02µs 69.0 MElem/sec N/A N/A

Copy link

Benchmark for 3aafbb6

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.7±0.08ms 12.6±0.09ms -0.79%
OptimalMerkleTree::::full_height_gen 803.7±5.71µs 805.3±6.69µs +0.20%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 381.8±3.70ns 374.8±3.90ns -1.83%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 549.8±6.77ns 540.6±6.95ns -1.67%
Pmtree::override_range 237.7±3.06µs 226.1±3.14µs -4.88%
Pmtree::set 50.9±1.69µs 51.0±1.35µs +0.20%
Pmtree:delete 50.6±0.33µs 51.1±0.60µs +0.99%
Set/FullMerkleTree::::set/1 510.4±4.18µs 514.3±11.40µs +0.76%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.2±0.11ms +1.96%
Set/FullMerkleTree::::set/100 51.7±0.07ms 51.8±0.09ms +0.19%
Set/FullMerkleTree::::set_range/1 514.9±10.08µs 515.2±4.79µs +0.06%
Set/FullMerkleTree::::set_range/10 704.8±11.93µs 704.8±4.87µs 0.00%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 516.7±5.61µs 515.9±3.59µs -0.15%
Set/OptimalMerkleTree::::set/10 5.3±0.01ms 5.3±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 53.4±0.11ms 53.2±0.11ms -0.37%
Set/OptimalMerkleTree::::set_range/1 514.7±4.81µs 515.4±4.76µs +0.14%
Set/OptimalMerkleTree::::set_range/10 705.9±4.34µs 706.0±7.01µs +0.01%
Set/OptimalMerkleTree::::set_range/100 3.0±0.03ms 3.0±0.16ms 0.00%
zkey::zkey_from_raw 683.0±0.33ms 679.9±4.61ms -0.45%

Copy link

Benchmark for 3aafbb6

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.16ms 12.9±0.63ms -0.77%
OptimalMerkleTree::::full_height_gen 786.0±5.25µs 788.6±9.05µs +0.33%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 378.1±7.32ns 382.1±6.40ns +1.06%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 537.2±5.43ns 540.6±14.86ns +0.63%
Pmtree::override_range 227.3±6.61µs 232.5±2.82µs +2.29%
Pmtree::set 49.9±0.34µs 50.2±1.23µs +0.60%
Pmtree:delete 50.0±0.45µs 50.1±0.49µs +0.20%
Set/FullMerkleTree::::set/1 513.9±4.09µs 513.8±5.00µs -0.02%
Set/FullMerkleTree::::set/10 5.2±0.07ms 5.1±0.01ms -1.92%
Set/FullMerkleTree::::set/100 51.7±0.24ms 51.7±0.11ms 0.00%
Set/FullMerkleTree::::set_range/1 513.4±2.55µs 514.2±3.11µs +0.16%
Set/FullMerkleTree::::set_range/10 703.9±5.72µs 702.7±3.55µs -0.17%
Set/FullMerkleTree::::set_range/100 3.1±0.12ms 3.1±0.09ms 0.00%
Set/OptimalMerkleTree::::set/1 515.5±5.35µs 514.9±2.72µs -0.12%
Set/OptimalMerkleTree::::set/10 5.3±0.03ms 5.3±0.19ms 0.00%
Set/OptimalMerkleTree::::set/100 53.2±0.17ms 53.2±0.23ms 0.00%
Set/OptimalMerkleTree::::set_range/1 515.2±5.02µs 514.8±3.41µs -0.08%
Set/OptimalMerkleTree::::set_range/10 704.6±3.30µs 705.6±3.66µs +0.14%
Set/OptimalMerkleTree::::set_range/100 3.0±0.02ms 3.0±0.01ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.01ms 0.00%
zkey::zkey_from_raw 681.3±0.30ms 682.3±1.52ms +0.15%

…hmark folder (forked into seperate branch) for the PR review
@vinhtc27 vinhtc27 marked this pull request as ready for review April 23, 2025 03:38
Copy link

Benchmark for c18d140

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 879.6±6.76ns 882.1±7.33ns +0.28%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.06ns 7.8±0.07ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.09ns 3.7±0.16ns -2.63%
FullMerkleTree::override_range 1351.5±16.03ns 1361.3±21.32ns +0.73%
FullMerkleTree::set 894.2±33.39ns 873.3±7.71ns -2.34%
OptimalMerkleTree::compute_root 1028.8±7.33ns 1001.0±7.19ns -2.70%
OptimalMerkleTree::delete 1066.5±11.25ns 1039.5±104.30ns -2.53%
OptimalMerkleTree::get 22.9±0.35ns 22.5±0.27ns -1.75%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.10ns 7.5±0.08ns 0.00%
OptimalMerkleTree::get_subtree_root 32.7±0.16ns 24.1±0.38ns -26.30%
OptimalMerkleTree::override_range 1149.9±14.46ns 1154.3±12.27ns +0.38%
OptimalMerkleTree::set 1042.9±12.10ns 1018.2±81.63ns -2.37%
poseidon Fr/Array hash/10 139.1±0.15µs 70.2 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1503.1±2.43µs 65.0 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.4±0.98ms 63.2 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.08µs 69.0 MElem/sec N/A N/A

Copy link

Benchmark for c18d140

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.19ms 13.0±0.13ms +3.17%
OptimalMerkleTree::::full_height_gen 817.2±21.10µs 804.6±10.41µs -1.54%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 369.2±3.91ns 369.6±4.59ns +0.11%
Pmtree::get_empty_leaves_indices 8.7±0.18ns 8.7±0.11ns 0.00%
Pmtree::get_subtree_root 548.0±7.68ns 535.0±8.67ns -2.37%
Pmtree::override_range 237.8±9.92µs 227.6±5.74µs -4.29%
Pmtree::set 50.6±0.51µs 50.6±0.42µs 0.00%
Pmtree:delete 50.9±1.90µs 51.0±2.33µs +0.20%
Set/FullMerkleTree::::set/1 513.9±3.31µs 514.3±2.47µs +0.08%
Set/FullMerkleTree::::set/10 5.2±0.19ms 5.2±0.11ms 0.00%
Set/FullMerkleTree::::set/100 51.7±0.36ms 51.7±0.17ms 0.00%
Set/FullMerkleTree::::set_range/1 513.4±2.77µs 514.5±5.19µs +0.21%
Set/FullMerkleTree::::set_range/10 703.2±4.52µs 704.5±8.89µs +0.18%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 516.1±20.53µs 515.7±3.04µs -0.08%
Set/OptimalMerkleTree::::set/10 5.3±0.05ms 5.3±0.05ms 0.00%
Set/OptimalMerkleTree::::set/100 53.4±1.01ms 53.2±0.10ms -0.37%
Set/OptimalMerkleTree::::set_range/1 515.2±3.88µs 515.2±2.05µs 0.00%
Set/OptimalMerkleTree::::set_range/10 706.0±8.09µs 705.5±7.53µs -0.07%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.08ms 0.00%
zkey::zkey_from_raw 683.8±0.77ms 685.4±10.12ms +0.23%

Copy link

Benchmark for c18d140

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.7±0.22ms 12.6±0.12ms -0.79%
OptimalMerkleTree::::full_height_gen 805.2±3.93µs 806.1±18.34µs +0.11%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 377.5±4.31ns 375.1±7.25ns -0.64%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 534.9±5.25ns 533.6±7.76ns -0.24%
Pmtree::override_range 228.3±4.10µs 226.6±5.21µs -0.74%
Pmtree::set 50.7±5.27µs 50.1±1.13µs -1.18%
Pmtree:delete 50.1±0.59µs 50.0±0.55µs -0.20%
Set/FullMerkleTree::::set/1 514.1±3.74µs 513.9±3.37µs -0.04%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.2±0.17ms 0.00%
Set/FullMerkleTree::::set/100 51.8±0.46ms 51.5±0.12ms -0.58%
Set/FullMerkleTree::::set_range/1 513.5±4.38µs 514.0±4.55µs +0.10%
Set/FullMerkleTree::::set_range/10 703.3±3.24µs 703.2±4.72µs -0.01%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 515.0±4.49µs 513.8±7.62µs -0.23%
Set/OptimalMerkleTree::::set/10 5.3±0.02ms 5.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 53.2±0.15ms 53.2±0.05ms 0.00%
Set/OptimalMerkleTree::::set_range/1 515.5±5.95µs 517.3±8.85µs +0.35%
Set/OptimalMerkleTree::::set_range/10 705.4±6.47µs 705.2±4.25µs -0.03%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.00ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.7±0.00ms 5.8±0.01ms +1.75%
zkey::zkey_from_raw 681.0±0.32ms 686.6±7.21ms +0.82%

Copy link

Benchmark for 43f65f8

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 867.6±9.05ns 877.7±49.22ns +1.16%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.11ns 7.8±0.31ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.12ns 3.8±0.11ns 0.00%
FullMerkleTree::override_range 1357.0±28.37ns 1349.1±18.56ns -0.58%
FullMerkleTree::set 875.1±8.34ns 876.0±8.74ns +0.10%
OptimalMerkleTree::compute_root 1000.1±6.07ns 1005.7±40.17ns +0.56%
OptimalMerkleTree::delete 1013.6±6.26ns 1011.4±11.00ns -0.22%
OptimalMerkleTree::get 22.1±0.31ns 22.2±0.47ns +0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.11ns 7.5±0.11ns 0.00%
OptimalMerkleTree::get_subtree_root 24.4±1.12ns 24.2±0.27ns -0.82%
OptimalMerkleTree::override_range 1151.1±12.13ns 1153.3±33.64ns +0.19%
OptimalMerkleTree::set 1011.8±15.15ns 1011.5±25.41ns -0.03%
poseidon Fr/Array hash/10 140.7±0.17µs 69.4 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1514.9±1.58µs 64.5 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.3±0.07ms 63.9 KElem/sec N/A N/A
poseidon Fr/Single hash 14.0±0.05µs 68.3 MElem/sec N/A N/A

Copy link

Benchmark for 43f65f8

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.8±0.09ms 12.9±0.14ms +0.78%
OptimalMerkleTree::::full_height_gen 784.8±4.88µs 788.4±21.34µs +0.46%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 370.9±5.30ns 374.4±4.74ns +0.94%
Pmtree::get_empty_leaves_indices 8.8±0.26ns 8.7±0.14ns -1.14%
Pmtree::get_subtree_root 538.6±4.63ns 529.4±6.81ns -1.71%
Pmtree::override_range 231.3±4.46µs 228.2±6.07µs -1.34%
Pmtree::set 50.1±1.04µs 50.2±0.45µs +0.20%
Pmtree:delete 50.1±0.71µs 50.2±0.60µs +0.20%
Set/FullMerkleTree::::set/1 514.3±4.37µs 513.6±4.24µs -0.14%
Set/FullMerkleTree::::set/10 5.2±0.03ms 5.2±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.9±1.42ms 51.6±0.15ms -0.58%
Set/FullMerkleTree::::set_range/1 513.1±6.15µs 512.8±10.04µs -0.06%
Set/FullMerkleTree::::set_range/10 704.1±6.07µs 703.4±5.31µs -0.10%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.02ms 0.00%
Set/OptimalMerkleTree::::set/1 514.5±5.42µs 514.8±2.54µs +0.06%
Set/OptimalMerkleTree::::set/10 5.3±0.02ms 5.3±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 53.2±0.11ms 53.0±0.15ms -0.38%
Set/OptimalMerkleTree::::set_range/1 514.6±4.60µs 515.0±5.29µs +0.08%
Set/OptimalMerkleTree::::set_range/10 707.0±5.90µs 703.4±5.13µs -0.51%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.03ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.04ms 0.00%
zkey::zkey_from_raw 683.9±5.84ms 683.0±2.19ms -0.13%

Copy link

Benchmark for 43f65f8

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.8±0.24ms 11.8±0.24ms 0.00%
OptimalMerkleTree::::full_height_gen 760.4±22.63µs 757.0±24.79µs -0.45%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 356.8±10.94ns 345.9±8.37ns -3.05%
Pmtree::get_empty_leaves_indices 8.4±0.31ns 8.6±0.20ns +2.38%
Pmtree::get_subtree_root 500.1±11.93ns 512.0±17.91ns +2.38%
Pmtree::override_range 216.9±8.22µs 215.1±6.08µs -0.83%
Pmtree::set 48.8±1.99µs 49.3±1.44µs +1.02%
Pmtree:delete 48.1±1.21µs 49.6±1.74µs +3.12%
Set/FullMerkleTree::::set/1 498.5±11.67µs 498.6±13.11µs +0.02%
Set/FullMerkleTree::::set/10 4.9±0.11ms 4.9±0.15ms 0.00%
Set/FullMerkleTree::::set/100 49.9±1.20ms 49.0±1.08ms -1.80%
Set/FullMerkleTree::::set_range/1 490.1±10.50µs 487.6±14.39µs -0.51%
Set/FullMerkleTree::::set_range/10 676.2±13.79µs 667.0±14.98µs -1.36%
Set/FullMerkleTree::::set_range/100 3.0±0.07ms 2.9±0.08ms -3.33%
Set/OptimalMerkleTree::::set/1 500.6±12.53µs 486.3±14.73µs -2.86%
Set/OptimalMerkleTree::::set/10 5.0±0.11ms 4.9±0.06ms -2.00%
Set/OptimalMerkleTree::::set/100 49.3±0.49ms 50.0±0.93ms +1.42%
Set/OptimalMerkleTree::::set_range/1 485.2±11.71µs 479.7±10.37µs -1.13%
Set/OptimalMerkleTree::::set_range/10 654.8±8.39µs 660.0±12.50µs +0.79%
Set/OptimalMerkleTree::::set_range/100 2.9±0.08ms 2.9±0.07ms 0.00%
zkey::zkey_from_raw 650.1±10.85ms 661.4±9.26ms +1.74%

@vinhtc27 vinhtc27 requested a review from seemenkina April 23, 2025 03:56
Copy link

Benchmark for 16ab01f

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 872.5±28.79ns 895.6±9.84ns +2.65%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.11ns 7.8±0.06ns 0.00%
FullMerkleTree::get_subtree_root 3.9±0.57ns 3.9±0.33ns 0.00%
FullMerkleTree::override_range 1358.6±32.97ns 1374.9±18.13ns +1.20%
FullMerkleTree::set 874.8±9.46ns 894.4±17.69ns +2.24%
OptimalMerkleTree::compute_root 1001.4±10.84ns 1004.5±16.43ns +0.31%
OptimalMerkleTree::delete 1012.2±20.19ns 1053.0±13.84ns +4.03%
OptimalMerkleTree::get 22.1±0.19ns 22.5±0.28ns +1.81%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.06ns 7.5±0.08ns 0.00%
OptimalMerkleTree::get_subtree_root 24.1±0.13ns 24.2±0.64ns +0.41%
OptimalMerkleTree::override_range 1149.5±14.32ns 1171.3±14.78ns +1.90%
OptimalMerkleTree::set 1006.4±5.68ns 1035.6±20.93ns +2.90%
poseidon Fr/Array hash/10 140.4±1.09µs 69.6 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1501.8±2.20µs 65.0 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.01ms 64.5 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.03µs 69.1 MElem/sec N/A N/A

Copy link

Benchmark for 16ab01f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.7±0.20ms 12.7±0.06ms 0.00%
OptimalMerkleTree::::full_height_gen 788.8±4.76µs 798.3±5.71µs +1.20%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 378.3±3.62ns 373.1±5.22ns -1.37%
Pmtree::get_empty_leaves_indices 8.7±0.09ns 8.7±0.11ns 0.00%
Pmtree::get_subtree_root 562.1±3.24ns 552.6±6.75ns -1.69%
Pmtree::override_range 225.5±3.83µs 226.3±3.66µs +0.35%
Pmtree::set 50.4±0.24µs 50.8±2.10µs +0.79%
Pmtree:delete 50.5±0.28µs 50.8±0.37µs +0.59%
Set/FullMerkleTree::::set/1 514.5±4.61µs 522.3±27.95µs +1.52%
Set/FullMerkleTree::::set/10 5.2±0.03ms 5.2±0.07ms 0.00%
Set/FullMerkleTree::::set/100 51.7±0.12ms 51.8±0.43ms +0.19%
Set/FullMerkleTree::::set_range/1 514.0±2.52µs 513.1±5.23µs -0.18%
Set/FullMerkleTree::::set_range/10 703.7±4.33µs 704.6±6.39µs +0.13%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 515.1±5.54µs 514.9±4.61µs -0.04%
Set/OptimalMerkleTree::::set/10 5.3±0.04ms 5.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 53.1±0.11ms 53.2±0.27ms +0.19%
Set/OptimalMerkleTree::::set_range/1 515.5±6.12µs 512.3±2.86µs -0.62%
Set/OptimalMerkleTree::::set_range/10 705.9±7.99µs 704.3±5.31µs -0.23%
Set/OptimalMerkleTree::::set_range/100 3.0±0.01ms 3.0±0.01ms 0.00%
zkey::zkey_from_raw 684.3±1.91ms 685.3±2.32ms +0.15%

Copy link

Benchmark for 16ab01f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.5±0.37ms 12.6±0.90ms +0.80%
OptimalMerkleTree::::full_height_gen 784.1±7.12µs 784.6±7.40µs +0.06%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 412.2±4.14ns 398.5±4.08ns -3.32%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 8.7±0.10ns 0.00%
Pmtree::get_subtree_root 577.5±7.63ns 555.3±7.76ns -3.84%
Pmtree::override_range 230.1±3.59µs 225.1±2.60µs -2.17%
Pmtree::set 50.0±0.39µs 50.2±1.38µs +0.40%
Pmtree:delete 50.1±0.41µs 50.0±0.46µs -0.20%
Set/FullMerkleTree::::set/1 514.4±5.20µs 514.9±4.50µs +0.10%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.2±0.02ms +1.96%
Set/FullMerkleTree::::set/100 51.7±0.20ms 51.7±0.13ms 0.00%
Set/FullMerkleTree::::set_range/1 514.3±2.83µs 514.1±5.08µs -0.04%
Set/FullMerkleTree::::set_range/10 707.8±35.05µs 703.4±3.90µs -0.62%
Set/FullMerkleTree::::set_range/100 3.1±0.02ms 3.1±0.02ms 0.00%
Set/OptimalMerkleTree::::set/1 514.8±4.19µs 539.2±118.82µs +4.74%
Set/OptimalMerkleTree::::set/10 5.3±0.07ms 5.3±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 53.2±0.46ms 53.2±0.24ms 0.00%
Set/OptimalMerkleTree::::set_range/1 515.8±5.23µs 511.7±3.91µs -0.79%
Set/OptimalMerkleTree::::set_range/10 705.2±4.39µs 705.4±3.90µs +0.03%
Set/OptimalMerkleTree::::set_range/100 3.0±0.00ms 3.0±0.01ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.01ms 0.00%
zkey::zkey_from_raw 683.1±5.16ms 682.7±0.75ms -0.06%

@vinhtc27 vinhtc27 requested review from sydhds and removed request for sydhds April 23, 2025 08:23
…date and improve installdeps command, resolve issue related to enable nvm in current terminal session
Copy link

Benchmark for 631621f

Click to view benchmark
Test Base PR %
FullMerkleTree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::delete 870.0±10.00ns 869.2±7.86ns -0.09%
FullMerkleTree::get 0.0±0.00ns 0.0±0.00ns NaN%
FullMerkleTree::get_empty_leaves_indices 7.8±0.09ns 7.8±0.19ns 0.00%
FullMerkleTree::get_subtree_root 3.8±0.16ns 3.8±0.13ns 0.00%
FullMerkleTree::override_range 1381.1±22.95ns 1347.6±16.08ns -2.43%
FullMerkleTree::set 879.0±8.72ns 875.1±6.74ns -0.44%
OptimalMerkleTree::compute_root 1001.3±11.44ns 1037.2±13.54ns +3.59%
OptimalMerkleTree::delete 1014.9±10.23ns 1057.9±78.49ns +4.24%
OptimalMerkleTree::get 22.3±1.07ns 22.4±0.78ns +0.45%
OptimalMerkleTree::get_empty_leaves_indices 7.5±0.11ns 7.5±0.18ns 0.00%
OptimalMerkleTree::get_subtree_root 24.2±0.29ns 24.4±0.24ns +0.83%
OptimalMerkleTree::override_range 1170.0±23.72ns 1239.2±12.39ns +5.91%
OptimalMerkleTree::set 1019.2±10.15ns 1050.7±40.35ns +3.09%
poseidon Fr/Array hash/10 139.5±0.39µs 70.0 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1505.6±1.79µs 64.9 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.2±0.05ms 64.4 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.04µs 69.0 MElem/sec N/A N/A

Copy link

Benchmark for 631621f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 15.7±0.53ms 14.1±0.61ms -10.19%
OptimalMerkleTree::::full_height_gen 831.5±19.56µs 824.1±20.39µs -0.89%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 390.5±11.07ns 381.9±13.51ns -2.20%
Pmtree::get_empty_leaves_indices 9.5±0.45ns 9.4±0.44ns -1.05%
Pmtree::get_subtree_root 575.6±16.73ns 547.1±12.28ns -4.95%
Pmtree::override_range 244.3±6.28µs 245.5±9.70µs +0.49%
Pmtree::set 52.0±1.42µs 52.5±1.26µs +0.96%
Pmtree:delete 52.5±1.20µs 53.4±5.34µs +1.71%
Set/FullMerkleTree::::set/1 541.5±9.62µs 519.9±7.55µs -3.99%
Set/FullMerkleTree::::set/10 5.4±0.12ms 5.2±0.07ms -3.70%
Set/FullMerkleTree::::set/100 53.8±1.09ms 53.3±1.22ms -0.93%
Set/FullMerkleTree::::set_range/1 544.6±10.35µs 521.7±10.43µs -4.20%
Set/FullMerkleTree::::set_range/10 722.6±16.14µs 711.9±13.00µs -1.48%
Set/FullMerkleTree::::set_range/100 3.2±0.07ms 3.2±0.07ms 0.00%
Set/OptimalMerkleTree::::set/1 541.0±13.23µs 521.5±8.16µs -3.60%
Set/OptimalMerkleTree::::set/10 5.6±0.07ms 5.4±0.11ms -3.57%
Set/OptimalMerkleTree::::set/100 55.9±0.94ms 55.0±1.35ms -1.61%
Set/OptimalMerkleTree::::set_range/1 537.9±15.24µs 530.3±13.63µs -1.41%
Set/OptimalMerkleTree::::set_range/10 740.1±10.63µs 726.0±17.69µs -1.91%
Set/OptimalMerkleTree::::set_range/100 3.1±0.03ms 3.1±0.06ms 0.00%
zkey::zkey_from_raw 701.3±4.73ms 701.7±6.69ms +0.06%

Copy link

Benchmark for 631621f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.12ms 12.5±0.11ms -0.79%
OptimalMerkleTree::::full_height_gen 785.6±11.47µs 785.4±16.88µs -0.03%
Pmtree::compute_root 0.0±0.00ns 0.0±0.00ns NaN%
Pmtree::get 383.6±9.62ns 381.5±3.99ns -0.55%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.07ns 0.00%
Pmtree::get_subtree_root 539.5±13.24ns 539.8±14.38ns +0.06%
Pmtree::override_range 230.7±3.14µs 226.9±3.78µs -1.65%
Pmtree::set 50.1±0.75µs 50.3±1.21µs +0.40%
Pmtree:delete 50.3±1.45µs 50.0±0.42µs -0.60%
Set/FullMerkleTree::::set/1 513.4±2.98µs 522.7±9.33µs +1.81%
Set/FullMerkleTree::::set/10 5.2±0.02ms 5.2±0.04ms 0.00%
Set/FullMerkleTree::::set/100 51.7±0.10ms 52.5±0.24ms +1.55%
Set/FullMerkleTree::::set_range/1 514.3±7.87µs 518.5±7.39µs +0.82%
Set/FullMerkleTree::::set_range/10 702.7±3.31µs 706.9±4.31µs +0.60%
Set/FullMerkleTree::::set_range/100 3.1±0.01ms 3.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/1 514.6±3.94µs 514.9±3.13µs +0.06%
Set/OptimalMerkleTree::::set/10 5.3±0.03ms 5.4±0.08ms +1.89%
Set/OptimalMerkleTree::::set/100 53.2±0.37ms 53.2±0.11ms 0.00%
Set/OptimalMerkleTree::::set_range/1 517.2±10.40µs 516.4±9.64µs -0.15%
Set/OptimalMerkleTree::::set_range/10 708.0±10.43µs 709.6±25.73µs +0.23%
Set/OptimalMerkleTree::::set_range/100 3.0±0.11ms 3.0±0.03ms 0.00%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.07ms 5.8±0.06ms 0.00%
zkey::zkey_from_raw 683.6±6.26ms 681.7±2.42ms -0.28%

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.

Parallel execution in rln-wasm
2 participants