ark-r1cs-std/crypto-primitives/benches/crypto_primitives/crh.rs
crypto-primitives/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(¶meters, &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);