zerokit
zerokit copied to clipboard
Add function for checking indices of leaves which are set to zero
Part of #237
In general everything is ready, tests that helped to find problems from #248 are commented out for now.
Benchmark for 80b3da6
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
FullMerkleTree::delete | 843.4±11.26ns | 856.1±5.48ns | +1.51% |
FullMerkleTree::get | 0.0±0.00ns | 3.4±0.04ns | +Infinity% |
FullMerkleTree::get_empty_leaves_indices | 4.3±0.08ns | N/A | N/A |
FullMerkleTree::override_range | 2.1±0.02µs | 2.2±0.13µs | +4.76% |
FullMerkleTree::set | 842.7±8.96ns | 855.5±10.94ns | +1.52% |
OptimalMerkleTree::compute_root | 984.0±16.14ns | 1027.4±17.15ns | +4.41% |
OptimalMerkleTree::delete | 985.9±6.57ns | 1017.8±16.40ns | +3.24% |
OptimalMerkleTree::get | 18.6±0.27ns | 23.4±0.20ns | +25.81% |
OptimalMerkleTree::get_empty_leaves_indices | 4.7±0.07ns | N/A | N/A |
OptimalMerkleTree::override_range | 4.9±0.04µs | 5.1±0.23µs | +4.08% |
OptimalMerkleTree::set | 987.0±24.76ns | 1015.8±11.38ns | +2.92% |
Benchmark for 576e171
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
FullMerkleTree::delete | 851.0±44.21ns | 853.6±12.32ns | +0.31% |
FullMerkleTree::get | 0.0±0.00ns | 3.4±0.06ns | +Infinity% |
FullMerkleTree::get_empty_leaves_indices | 4.3±0.06ns | N/A | N/A |
FullMerkleTree::override_range | 2.1±0.03µs | 2.1±0.03µs | 0.00% |
FullMerkleTree::set | 844.0±11.01ns | 849.9±11.00ns | +0.70% |
OptimalMerkleTree::compute_root | 985.7±9.78ns | 1016.7±29.97ns | +3.14% |
OptimalMerkleTree::delete | 986.4±14.90ns | 996.5±13.55ns | +1.02% |
OptimalMerkleTree::get | 18.5±0.23ns | 23.5±0.43ns | +27.03% |
OptimalMerkleTree::get_empty_leaves_indices | 4.7±0.08ns | N/A | N/A |
OptimalMerkleTree::override_range | 4.9±0.04µs | 5.1±0.05µs | +4.08% |
OptimalMerkleTree::set | 1000.7±75.19ns | 1001.8±37.74ns | +0.11% |
Benchmark for 576e171
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::<Poseidon>::full_height_gen | 14.9±0.28ms | 15.9±0.29ms | +6.71% |
OptimalMerkleTree::<Poseidon>::full_height_gen | 539.7±8.39µs | 580.9±5.13µs | +7.63% |
Pmtree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
Pmtree::get | 352.6±4.61ns | 325.8±14.77ns | -7.60% |
Pmtree::get_empty_leaves_indices | 8.4±0.16ns | N/A | N/A |
Pmtree::override_range | 239.5±3.85µs | 237.9±4.38µs | -0.67% |
Pmtree::set | 53.9±0.93µs | 54.0±0.73µs | +0.19% |
Pmtree:delete | 53.8±0.50µs | 54.0±0.67µs | +0.37% |
Set/FullMerkleTree::<Poseidon>::set/1 | 544.0±6.31µs | 555.7±22.26µs | +2.15% |
Set/FullMerkleTree::<Poseidon>::set/10 | 5.5±0.03ms | 5.6±0.03ms | +1.82% |
Set/FullMerkleTree::<Poseidon>::set/100 | 55.0±0.26ms | 55.7±0.18ms | +1.27% |
Set/FullMerkleTree::<Poseidon>::set_range/1 | 544.8±5.58µs | 552.5±6.15µs | +1.41% |
Set/FullMerkleTree::<Poseidon>::set_range/10 | 748.9±13.43µs | 759.8±27.81µs | +1.46% |
Set/FullMerkleTree::<Poseidon>::set_range/100 | 3.3±0.05ms | 3.3±0.01ms | 0.00% |
Set/OptimalMerkleTree::<Poseidon>::set/1 | 541.1±7.97µs | 553.6±5.77µs | +2.31% |
Set/OptimalMerkleTree::<Poseidon>::set/10 | 5.4±0.02ms | 5.5±0.01ms | +1.85% |
Set/OptimalMerkleTree::<Poseidon>::set/100 | 54.3±0.18ms | 55.6±0.20ms | +2.39% |
Set/OptimalMerkleTree::<Poseidon>::set_range/1 | 539.0±5.68µs | 552.3±8.12µs | +2.47% |
Set/OptimalMerkleTree::<Poseidon>::set_range/10 | 5.4±0.02ms | 5.5±0.02ms | +1.85% |
Set/OptimalMerkleTree::<Poseidon>::set_range/100 | 54.2±0.10ms | 55.9±2.01ms | +3.14% |
zkey::upload_from_folder | 3.3±0.01s | 3.3±0.01s | 0.00% |
noticed the subtree test is included here, is that intended?
oh, It's just misprint in function name, thank you for noticed
Benchmark for 911e860
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
FullMerkleTree::delete | 846.9±13.20ns | 840.3±29.44ns | -0.78% |
FullMerkleTree::get | 0.0±0.00ns | 3.4±0.16ns | +Infinity% |
FullMerkleTree::get_empty_leaves_indices | 4.3±0.07ns | N/A | N/A |
FullMerkleTree::override_range | 2.1±0.06µs | 2.2±0.04µs | +4.76% |
FullMerkleTree::set | 842.4±16.80ns | 818.9±18.98ns | -2.79% |
OptimalMerkleTree::compute_root | 987.5±32.79ns | 965.2±34.04ns | -2.26% |
OptimalMerkleTree::delete | 949.3±21.99ns | 986.2±57.53ns | +3.89% |
OptimalMerkleTree::get | 27.0±0.60ns | 22.9±0.63ns | -15.19% |
OptimalMerkleTree::get_empty_leaves_indices | 4.6±0.13ns | N/A | N/A |
OptimalMerkleTree::override_range | 4.8±0.14µs | 5.1±0.14µs | +6.25% |
OptimalMerkleTree::set | 951.3±21.00ns | 985.8±17.06ns | +3.63% |
Benchmark for 911e860
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::<Poseidon>::full_height_gen | 15.2±1.01ms | 14.6±0.11ms | -3.95% |
OptimalMerkleTree::<Poseidon>::full_height_gen | 543.8±12.11µs | 574.0±4.74µs | +5.55% |
Pmtree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
Pmtree::get | 342.3±6.96ns | 329.4±3.35ns | -3.77% |
Pmtree::get_empty_leaves_indices | 8.4±0.32ns | N/A | N/A |
Pmtree::override_range | 234.7±3.44µs | 231.9±3.63µs | -1.19% |
Pmtree::set | 54.2±1.96µs | 54.1±1.16µs | -0.18% |
Pmtree:delete | 53.6±0.62µs | 54.0±0.62µs | +0.75% |
Set/FullMerkleTree::<Poseidon>::set/1 | 540.0±6.06µs | 552.1±4.05µs | +2.24% |
Set/FullMerkleTree::<Poseidon>::set/10 | 5.5±0.02ms | 5.6±0.03ms | +1.82% |
Set/FullMerkleTree::<Poseidon>::set/100 | 54.3±0.22ms | 55.5±0.21ms | +2.21% |
Set/FullMerkleTree::<Poseidon>::set_range/1 | 538.8±4.70µs | 558.7±35.71µs | +3.69% |
Set/FullMerkleTree::<Poseidon>::set_range/10 | 742.4±13.60µs | 757.1±6.57µs | +1.98% |
Set/FullMerkleTree::<Poseidon>::set_range/100 | 3.2±0.01ms | 3.3±0.15ms | +3.13% |
Set/OptimalMerkleTree::<Poseidon>::set/1 | 540.8±7.41µs | 555.6±7.45µs | +2.74% |
Set/OptimalMerkleTree::<Poseidon>::set/10 | 5.4±0.04ms | 5.6±0.02ms | +3.70% |
Set/OptimalMerkleTree::<Poseidon>::set/100 | 54.6±0.18ms | 55.7±0.92ms | +2.01% |
Set/OptimalMerkleTree::<Poseidon>::set_range/1 | 540.0±2.94µs | 563.9±73.29µs | +4.43% |
Set/OptimalMerkleTree::<Poseidon>::set_range/10 | 5.4±0.01ms | 5.5±0.03ms | +1.85% |
Set/OptimalMerkleTree::<Poseidon>::set_range/100 | 54.8±0.36ms | 55.5±0.19ms | +1.28% |
zkey::upload_from_folder | 3.3±0.01s | 3.3±0.01s | 0.00% |
Benchmark for 3a20f37
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
FullMerkleTree::delete | 859.2±20.06ns | 875.4±80.11ns | +1.89% |
FullMerkleTree::get | 0.0±0.00ns | 3.4±0.04ns | +Infinity% |
FullMerkleTree::get_empty_leaves_indices | 4.6±0.03ns | N/A | N/A |
FullMerkleTree::get_subtree_root | 0.6±0.01ns | 3.6±0.12ns | +500.00% |
FullMerkleTree::override_range | 2.1±0.02µs | 2.2±0.03µs | +4.76% |
FullMerkleTree::set | 863.6±6.38ns | 862.5±11.18ns | -0.13% |
OptimalMerkleTree::compute_root | 1003.0±8.08ns | 997.5±5.96ns | -0.55% |
OptimalMerkleTree::delete | 1013.0±12.00ns | 1003.4±25.99ns | -0.95% |
OptimalMerkleTree::get | 18.6±0.17ns | 23.5±0.25ns | +26.34% |
OptimalMerkleTree::get_empty_leaves_indices | 4.6±0.07ns | N/A | N/A |
OptimalMerkleTree::get_subtree_root | 18.6±0.33ns | 23.9±0.36ns | +28.49% |
OptimalMerkleTree::override_range | 5.0±0.07µs | 5.1±0.14µs | +2.00% |
OptimalMerkleTree::set | 1014.8±6.56ns | 997.0±10.44ns | -1.75% |
Benchmark for 3a20f37
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::<Poseidon>::full_height_gen | 14.0±0.11ms | 15.1±0.06ms | +7.86% |
OptimalMerkleTree::<Poseidon>::full_height_gen | 543.2±7.67µs | 565.1±5.37µs | +4.03% |
Pmtree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
Pmtree::get | 340.1±3.75ns | 336.0±3.25ns | -1.21% |
Pmtree::get_empty_leaves_indices | 8.4±0.10ns | N/A | N/A |
Pmtree::get_subtree_root | 474.0±7.79ns | 475.1±5.13ns | +0.23% |
Pmtree::override_range | 234.4±3.72µs | 233.1±4.36µs | -0.55% |
Pmtree::set | 53.7±0.30µs | 54.5±0.56µs | +1.49% |
Pmtree:delete | 54.3±0.41µs | 54.5±1.41µs | +0.37% |
Set/FullMerkleTree::<Poseidon>::set/1 | 544.9±7.38µs | 544.9±2.51µs | 0.00% |
Set/FullMerkleTree::<Poseidon>::set/10 | 5.5±0.04ms | 5.5±0.02ms | 0.00% |
Set/FullMerkleTree::<Poseidon>::set/100 | 54.8±0.21ms | 55.0±0.22ms | +0.36% |
Set/FullMerkleTree::<Poseidon>::set_range/1 | 548.0±6.95µs | 546.9±12.14µs | -0.20% |
Set/FullMerkleTree::<Poseidon>::set_range/10 | 747.8±8.60µs | 749.6±22.54µs | +0.24% |
Set/FullMerkleTree::<Poseidon>::set_range/100 | 3.3±0.01ms | 3.3±0.01ms | 0.00% |
Set/OptimalMerkleTree::<Poseidon>::set/1 | 545.0±4.06µs | 547.0±4.61µs | +0.37% |
Set/OptimalMerkleTree::<Poseidon>::set/10 | 5.4±0.03ms | 5.5±0.03ms | +1.85% |
Set/OptimalMerkleTree::<Poseidon>::set/100 | 54.8±0.20ms | 54.9±0.19ms | +0.18% |
Set/OptimalMerkleTree::<Poseidon>::set_range/1 | 544.4±3.30µs | 545.6±5.20µs | +0.22% |
Set/OptimalMerkleTree::<Poseidon>::set_range/10 | 5.5±0.04ms | 5.5±0.02ms | 0.00% |
Set/OptimalMerkleTree::<Poseidon>::set_range/100 | 54.9±0.23ms | 55.3±2.55ms | +0.73% |
zkey::upload_from_folder | 3.3±0.01s | 3.3±0.01s | 0.00% |
Benchmark for 81048f0
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
FullMerkleTree::delete | 854.6±15.63ns | 842.0±12.44ns | -1.47% |
FullMerkleTree::get | 0.0±0.00ns | 0.0±0.00ns | NaN% |
FullMerkleTree::get_empty_leaves_indices | 7.1±0.08ns | N/A | N/A |
FullMerkleTree::get_subtree_root | 0.6±0.01ns | 0.6±0.01ns | 0.00% |
FullMerkleTree::override_range | 2.1±0.01µs | 1305.0±13.94ns | -37.86% |
FullMerkleTree::set | 850.6±11.04ns | 843.3±12.48ns | -0.86% |
OptimalMerkleTree::compute_root | 995.0±7.07ns | 1033.6±20.20ns | +3.88% |
OptimalMerkleTree::delete | 1006.8±47.33ns | 1039.8±14.66ns | +3.28% |
OptimalMerkleTree::get | 18.6±0.23ns | 23.3±0.21ns | +25.27% |
OptimalMerkleTree::get_empty_leaves_indices | 7.4±0.14ns | N/A | N/A |
OptimalMerkleTree::get_subtree_root | 18.7±0.77ns | 23.8±0.37ns | +27.27% |
OptimalMerkleTree::override_range | 5.0±0.04µs | 4.2±0.25µs | -16.00% |
OptimalMerkleTree::set | 1002.0±8.01ns | 1042.8±14.52ns | +4.07% |
Benchmark for 81048f0
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
FullMerkleTree::<Poseidon>::full_height_gen | 13.9±0.19ms | 15.5±0.48ms | +11.51% |
OptimalMerkleTree::<Poseidon>::full_height_gen | 544.3±5.90µs | 569.9±7.61µs | +4.70% |
Pmtree::compute_root | 0.0±0.00ns | 0.0±0.00ns | NaN% |
Pmtree::get | 334.5±4.98ns | 339.7±10.56ns | +1.55% |
Pmtree::get_empty_leaves_indices | 8.4±0.14ns | N/A | N/A |
Pmtree::get_subtree_root | 473.8±8.44ns | 478.7±8.45ns | +1.03% |
Pmtree::override_range | 234.0±4.69µs | 233.4±3.87µs | -0.26% |
Pmtree::set | 53.7±0.59µs | 53.7±0.35µs | 0.00% |
Pmtree:delete | 53.7±0.37µs | 53.9±1.01µs | +0.37% |
Set/FullMerkleTree::<Poseidon>::set/1 | 542.9±4.11µs | 547.9±8.31µs | +0.92% |
Set/FullMerkleTree::<Poseidon>::set/10 | 5.4±0.15ms | 5.5±0.03ms | +1.85% |
Set/FullMerkleTree::<Poseidon>::set/100 | 54.8±0.25ms | 55.1±0.26ms | +0.55% |
Set/FullMerkleTree::<Poseidon>::set_range/1 | 542.2±4.27µs | 548.0±6.08µs | +1.07% |
Set/FullMerkleTree::<Poseidon>::set_range/10 | 745.0±5.96µs | 749.3±12.45µs | +0.58% |
Set/FullMerkleTree::<Poseidon>::set_range/100 | 3.3±0.01ms | 3.3±0.01ms | 0.00% |
Set/OptimalMerkleTree::<Poseidon>::set/1 | 547.8±4.11µs | 548.4±8.26µs | +0.11% |
Set/OptimalMerkleTree::<Poseidon>::set/10 | 5.5±0.02ms | 5.5±0.02ms | 0.00% |
Set/OptimalMerkleTree::<Poseidon>::set/100 | 54.8±0.23ms | 55.0±0.14ms | +0.36% |
Set/OptimalMerkleTree::<Poseidon>::set_range/1 | 545.1±5.97µs | 543.9±8.00µs | -0.22% |
Set/OptimalMerkleTree::<Poseidon>::set_range/10 | 5.5±0.10ms | 5.5±0.01ms | 0.00% |
Set/OptimalMerkleTree::<Poseidon>::set_range/100 | 55.0±0.35ms | 54.9±0.10ms | -0.18% |
zkey::upload_from_folder | 3.3±0.00s | 3.3±0.01s | 0.00% |