From 5bfd71857520794bb855539a47740b360e32d85e Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 28 Mar 2024 12:05:56 +0100 Subject: [PATCH] doc: add desktop nullifier/SMT benchmarks comparison --- .../bench_verify_dao-propose-input_iter.svg | 2478 +++++++++++++++++ .../bench_verify_dao-propose-input_pdf.svg | 505 ++++ .../bench_verify_dao-vote-input_iter.svg | 1840 ++++++++++++ .../bench_verify_dao-vote-input_pdf.svg | 492 ++++ doc/src/assets/zk-verif-bench.png | Bin 91286 -> 0 bytes doc/src/dev/bench.md | 93 +- 6 files changed, 5338 insertions(+), 70 deletions(-) create mode 100644 doc/src/assets/bench_verify_dao-propose-input_iter.svg create mode 100644 doc/src/assets/bench_verify_dao-propose-input_pdf.svg create mode 100644 doc/src/assets/bench_verify_dao-vote-input_iter.svg create mode 100644 doc/src/assets/bench_verify_dao-vote-input_pdf.svg delete mode 100644 doc/src/assets/zk-verif-bench.png 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 37531153c90747cec2f0f80518a51d8e60d9a1d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91286 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

  • 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 + -## 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