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 ¶meters,
37 &input,
38 &commitment_randomness,
39 )
40 .unwrap();
41 })
42 });
43}
44
45criterion_group! {
46 name = comm_setup;
47 config = Criterion::default().sample_size(10);
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);