-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathbench_with_baseline.rs
27 lines (25 loc) · 1.07 KB
/
bench_with_baseline.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use ark_bls12_381::G1Affine;
use ark_ec::msm::VariableBaseMSM as BaselineVariableBaseMSM;
use ark_msm::{msm::VariableBaseMSM, utils::generate_msm_inputs};
use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
fn benchmark_with_baseline(c: &mut Criterion) {
let mut group = c.benchmark_group("msm");
for size in 8..13 {
let (point_vec, scalar_vec) = generate_msm_inputs::<G1Affine>(1 << size);
let point_vec = black_box(point_vec);
let scalar_vec = black_box(scalar_vec);
group.bench_with_input(BenchmarkId::new("Baseline", size), &size, |b, _size| {
b.iter(|| {
let _ = BaselineVariableBaseMSM::multi_scalar_mul(&point_vec, &scalar_vec);
})
});
group.bench_with_input(BenchmarkId::new("ArkMSM", size), &size, |b, _size| {
b.iter(|| {
let _ = VariableBaseMSM::multi_scalar_mul(&point_vec, &scalar_vec);
})
});
}
group.finish();
}
criterion_group!(benches, benchmark_with_baseline);
criterion_main!(benches);