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