1use core::{mem, ptr};
2use std::env;
3
4use kimchi::bench::BenchmarkCtx;
5
6pub fn black_box<T>(dummy: T) -> T {
9 unsafe {
10 let ret = ptr::read_volatile(&dummy);
11 mem::forget(dummy);
12 ret
13 }
14}
15
16fn main() {
17 let mode = env::args().nth(1);
18 match mode.as_deref() {
19 Some("prove") => {
20 let ctx = BenchmarkCtx::new(14);
21 loop {
22 let proof_and_public = ctx.create_proof();
23 black_box(proof_and_public);
24 }
25 }
26 Some("verify") => {
27 let ctx = BenchmarkCtx::new(4);
28 let proof_and_public = ctx.create_proof();
29 loop {
30 ctx.batch_verification(black_box(&vec![proof_and_public.clone()]));
31 }
32 }
33 _ => panic!("you must provide an argument (prove or verify)"),
34 };
35}