diff --git a/doc/src/assets/bench_verify_dao-propose-input_iter.svg b/doc/src/assets/bench_verify_dao-propose-input_iter.svg new file mode 100644 index 000000000..6d7fb5f42 --- /dev/null +++ b/doc/src/assets/bench_verify_dao-propose-input_iter.svg @@ -0,0 +1,2478 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gnuplot + Produced by GNUPLOT 6.0 patchlevel 0 + + + + + + + + 8 + + + + + + 9 + + + + + + 10 + + + + + + 11 + + + + + + 12 + + + + + + 13 + + + + + + 14 + + + + + + 15 + + + + + + 16 + + + + + + 17 + + + + + + 18 + + + + + + 0 + + + + + + 10 + + + + + + 20 + + + + + + 30 + + + + + + 40 + + + + + + 50 + + + + + + 60 + + + + + + 70 + + + + + + 80 + + + + + + 90 + + + + + + 100 + + + + Base + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Current + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Average Iteration Time (ms) + Sample + + verify DAO::propose-input + + + + + Gnuplot + + + + diff --git a/doc/src/assets/bench_verify_dao-propose-input_pdf.svg b/doc/src/assets/bench_verify_dao-propose-input_pdf.svg new file mode 100644 index 000000000..034cbc299 --- /dev/null +++ b/doc/src/assets/bench_verify_dao-propose-input_pdf.svg @@ -0,0 +1,505 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gnuplot + Produced by GNUPLOT 6.0 patchlevel 0 + + + 0 + + 0.2 + + 0.4 + + 0.6 + + 0.8 + + 1 + + 1.2 + + 1.4 + + 1.6 + + 7 + + 8 + + 9 + + 10 + + 11 + + 12 + + 13 + + 14 + + 15 + + 16 + + 17 + + 18 + + + + + Density (a.u.) + Average time (ms) + verify DAO::propose-input + + + + Gnuplot + + + + diff --git a/doc/src/assets/bench_verify_dao-vote-input_iter.svg b/doc/src/assets/bench_verify_dao-vote-input_iter.svg new file mode 100644 index 000000000..aac6cc7b9 --- /dev/null +++ b/doc/src/assets/bench_verify_dao-vote-input_iter.svg @@ -0,0 +1,1840 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gnuplot + Produced by GNUPLOT 6.0 patchlevel 0 + + + + 8 + + + 9 + + + 10 + + + 11 + + + 12 + + + 13 + + + 14 + + + 15 + + + 16 + + + 17 + + + 0 + + + 10 + + + 20 + + + 30 + + + 40 + + + 50 + + + 60 + + + 70 + + + 80 + + + 90 + + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Average Iteration Time (ms) + Sample + verify DAO::vote-input + + + + Gnuplot + + + + diff --git a/doc/src/assets/bench_verify_dao-vote-input_pdf.svg b/doc/src/assets/bench_verify_dao-vote-input_pdf.svg new file mode 100644 index 000000000..843c09c99 --- /dev/null +++ b/doc/src/assets/bench_verify_dao-vote-input_pdf.svg @@ -0,0 +1,492 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gnuplot + Produced by GNUPLOT 6.0 patchlevel 0 + + + 0 + + 0.2 + + 0.4 + + 0.6 + + 0.8 + + 1 + + 1.2 + + 1.4 + + 1.6 + + 7 + + 8 + + 9 + + 10 + + 11 + + 12 + + 13 + + 14 + + 15 + + 16 + + 17 + + + + + Density (a.u.) + Average time (ms) + verify DAO::vote-input + + + + Gnuplot + + + + diff --git a/doc/src/assets/zk-verif-bench.png b/doc/src/assets/zk-verif-bench.png deleted file mode 100644 index 37531153c..000000000 Binary files a/doc/src/assets/zk-verif-bench.png and /dev/null differ diff --git a/doc/src/dev/bench.md b/doc/src/dev/bench.md index 071adb0a3..2916e6097 100644 --- a/doc/src/dev/bench.md +++ b/doc/src/dev/bench.md @@ -1,83 +1,36 @@ # ZK Circuits -Tested with `proof/arithmetic.zk`. Graph of verification times: +Use `make bench`. For more info, see the [Criterion docs](https://bheisler.github.io/criterion.rs/book/user_guide/command_line_options.html). -![ZK verification benchmarks](../assets/zk-verif-bench.png) +## Verify `DAO::vote()` Input Proof -Proving times graph looks the same. +### Desktop -``` -cargo test bench_zk --release --all-features -- --nocapture -``` +Comparison nullifier (red) and SMT (blue) -You may need to compile `proof/arithmetic.zk`. Run `make zkas`, then do -`zkas proof/arithmetic.zk`. + + -## Desktop +| Test | # | +|------------|-----------| +| Nullifier | 9.3899 ms | +| SMT | 14.551 ms | +| Change (%) | +54.969% | -``` -Benchmarking k=11 -Avg proving time: 375 ms -Avg verification time: 3 ms -Benchmarking k=12 -Avg proving time: 588 ms -Avg verification time: 5 ms -Benchmarking k=13 -Avg proving time: 965 ms -Avg verification time: 8 ms -Benchmarking k=14 -Avg proving time: 1688 ms -Avg verification time: 13 ms -Benchmarking k=15 -test bench_zk has been running for over 60 seconds -Avg proving time: 3038 ms -Avg verification time: 20 ms -Benchmarking k=16 -Avg proving time: 6043 ms -Avg verification time: 35 ms -Benchmarking k=17 -Avg proving time: 13297 ms -Avg verification time: 65 ms -Benchmarking k=18 -Avg proving time: 26366 ms -Avg verification time: 122 ms -Benchmarking k=19 -Avg proving time: 65233 ms -Avg verification time: 219 ms -``` +## Verify `DAO::propose()` Input Proof -## Laptop +### Desktop -``` -Benchmarking k=11 -Avg proving time: 862 ms -Avg verification time: 14 ms -Benchmarking k=12 -Avg proving time: 1561 ms -Avg verification time: 21 ms -Benchmarking k=13 -test bench_zk has been running for over 60 seconds -Avg proving time: 2908 ms -Avg verification time: 36 ms -Benchmarking k=14 -Avg proving time: 5586 ms -Avg verification time: 64 ms -Benchmarking k=15 -Avg proving time: 10855 ms -Avg verification time: 114 ms -Benchmarking k=16 -Avg proving time: 22996 ms -Avg verification time: 205 ms -Benchmarking k=17 -Avg proving time: 52829 ms -Avg verification time: 369 ms -Benchmarking k=18 -Avg proving time: 116140 ms -Avg verification time: 708 ms -Benchmarking k=19 -Avg proving time: 245032 ms -Avg verification time: 1310 ms -``` +Comparison nullifier (red) and SMT (blue) + + + + +| Test | # | +|------------|-----------| +| Nullifier | 9.0842 ms | +| SMT | 14.274 ms | +| Change (%) | +57.126% | # WASM