hyperplonk/arithmetic/benches/bench.rs
arithmetic/benches/bench.rsRaw
1#[macro_use]
2extern crate criterion;
3
4use arithmetic::fix_variables;
5use ark_bls12_381::Fr;
6use ark_ff::Field;
7use ark_poly::{DenseMultilinearExtension, MultilinearExtension};
8use ark_std::{ops::Range, test_rng};
9use criterion::{black_box, BenchmarkId, Criterion};
10
11const NUM_VARIABLES_RANGE: Range<usize> = 10..21;
12
13fn evaluation_op_bench<F: Field>(c: &mut Criterion) {
14 let mut rng = test_rng();
15 let mut group = c.benchmark_group("Evaluate");
16 for nv in NUM_VARIABLES_RANGE {
17 group.bench_with_input(BenchmarkId::new("evaluate native", nv), &nv, |b, &nv| {
18 let poly = DenseMultilinearExtension::<F>::rand(nv, &mut rng);
19 let point: Vec<_> = (0..nv).map(|_| F::rand(&mut rng)).collect();
20 b.iter(|| black_box(poly.evaluate(&point).unwrap()))
21 });
22
23 group.bench_with_input(BenchmarkId::new("evaluate optimized", nv), &nv, |b, &nv| {
24 let poly = DenseMultilinearExtension::<F>::rand(nv, &mut rng);
25 let point: Vec<_> = (0..nv).map(|_| F::rand(&mut rng)).collect();
26 b.iter(|| black_box(fix_variables(&poly, &point)))
27 });
28 }
29 group.finish();
30}
31
32fn bench_bls_381(c: &mut Criterion) {
33 evaluation_op_bench::<Fr>(c);
34}
35
36criterion_group!(benches, bench_bls_381);
37criterion_main!(benches);