diff --git a/Cargo.toml b/Cargo.toml index af6a7c61b..4a1a392aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,14 @@ edition = "2018" [package.metadata.docs.rs] rustdoc-args = [ "--html-in-header", "katex-header.html" ] +[dev-dependencies] +criterion = "0.2.11" + +[[bench]] +name = "groups" +harness = false +required-features = ["groups"] + [dependencies.subtle] version = "2.1" default-features = false diff --git a/benches/groups.rs b/benches/groups.rs new file mode 100644 index 000000000..bfad095e1 --- /dev/null +++ b/benches/groups.rs @@ -0,0 +1,48 @@ +#[macro_use] +extern crate criterion; + +extern crate bls12_381; +use bls12_381::*; + +use criterion::{black_box, Criterion}; + +fn criterion_benchmark(c: &mut Criterion) { + // G1Affine + { + let name = "G1Affine"; + let a = G1Affine::generator(); + c.bench_function(&format!("{} check on curve", name), move |b| { + b.iter(|| black_box(a).is_on_curve()) + }); + } + + // G1Projective + { + let name = "G1Projective"; + let a = G1Projective::generator(); + c.bench_function(&format!("{} check on curve", name), move |b| { + b.iter(|| black_box(a).is_on_curve()) + }); + } + + // G2Affine + { + let name = "G2Affine"; + let a = G2Affine::generator(); + c.bench_function(&format!("{} check on curve", name), move |b| { + b.iter(|| black_box(a).is_on_curve()) + }); + } + + // G2Projective + { + let name = "G2Projective"; + let a = G2Projective::generator(); + c.bench_function(&format!("{} check on curve", name), move |b| { + b.iter(|| black_box(a).is_on_curve()) + }); + } +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches);