arnaucube
arnaucube/ark-r1cs-stdPublic Self-hosted repository
ark-r1cs-std/cp-benches/benches/crypto_primitives/crh.rs
cp-benches/benches/crypto_primitives/crh.rsRaw
 1use rand;
 2
 3#[macro_use]
 4extern crate criterion;
 5
 6use algebra::curves::edwards_bls12::EdwardsProjective as Edwards;
 7use criterion::Criterion;
 8use crypto_primitives::crh::{pedersen::*, FixedLengthCRH};
 9
10#[derive(Clone, PartialEq, Eq, Hash)]
11pub struct HashWindow;
12
13impl PedersenWindow for HashWindow {
14    const WINDOW_SIZE: usize = 250;
15    const NUM_WINDOWS: usize = 8;
16}
17
18fn pedersen_crh_setup(c: &mut Criterion) {
19    c.bench_function("Pedersen CRH Setup", move |b| {
20        b.iter(|| {
21            let mut rng = &mut rand::thread_rng();
22            PedersenCRH::<Edwards, HashWindow>::setup(&mut rng).unwrap()
23        })
24    });
25}
26
27fn pedersen_crh_eval(c: &mut Criterion) {
28    let mut rng = &mut rand::thread_rng();
29    let parameters = PedersenCRH::<Edwards, HashWindow>::setup(&mut rng).unwrap();
30    let input = vec![5u8; 128];
31    c.bench_function("Pedersen CRH Eval", move |b| {
32        b.iter(|| {
33            PedersenCRH::<Edwards, HashWindow>::evaluate(&parameters, &input).unwrap();
34        })
35    });
36}
37
38criterion_group! {
39    name = crh_setup;
40    config = Criterion::default().sample_size(10);
41    targets = pedersen_crh_setup
42}
43
44criterion_group! {
45    name = crh_eval;
46    config = Criterion::default().sample_size(10);
47    targets = pedersen_crh_eval
48}
49
50criterion_main!(crh_setup, crh_eval);