2020-09-15 09:44:56 -07:00
|
|
|
#[macro_use]
|
|
|
|
extern crate criterion;
|
|
|
|
|
2021-12-25 05:36:41 -08:00
|
|
|
use crate::arithmetic::small_multiexp;
|
2020-12-23 12:03:31 -08:00
|
|
|
use crate::pasta::{EqAffine, Fp};
|
2020-09-15 09:44:56 -07:00
|
|
|
use crate::poly::commitment::Params;
|
2021-12-25 05:36:41 -08:00
|
|
|
use group::ff::Field;
|
2022-01-20 10:28:44 -08:00
|
|
|
use halo2_proofs::*;
|
2020-09-15 09:44:56 -07:00
|
|
|
|
|
|
|
use criterion::{black_box, Criterion};
|
2022-01-20 08:16:48 -08:00
|
|
|
use rand_core::OsRng;
|
2020-09-15 09:44:56 -07:00
|
|
|
|
|
|
|
fn criterion_benchmark(c: &mut Criterion) {
|
2021-12-25 05:36:41 -08:00
|
|
|
let rng = OsRng;
|
|
|
|
|
2020-09-15 09:44:56 -07:00
|
|
|
// small multiexp
|
|
|
|
{
|
2020-12-23 15:09:17 -08:00
|
|
|
let params: Params<EqAffine> = Params::new(5);
|
2020-09-15 09:44:56 -07:00
|
|
|
let g = &mut params.get_g();
|
|
|
|
let len = g.len() / 2;
|
|
|
|
let (g_lo, g_hi) = g.split_at_mut(len);
|
|
|
|
|
2021-12-25 05:36:41 -08:00
|
|
|
let coeff_1 = Fp::random(rng);
|
|
|
|
let coeff_2 = Fp::random(rng);
|
2020-09-15 09:44:56 -07:00
|
|
|
|
|
|
|
c.bench_function("double-and-add", |b| {
|
|
|
|
b.iter(|| {
|
|
|
|
for (g_lo, g_hi) in g_lo.iter().zip(g_hi.iter()) {
|
2020-09-15 10:07:45 -07:00
|
|
|
small_multiexp(&[black_box(coeff_1), black_box(coeff_2)], &[*g_lo, *g_hi]);
|
2020-09-15 09:44:56 -07:00
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
criterion_group!(benches, criterion_benchmark);
|
|
|
|
criterion_main!(benches);
|