arnaucube
arnaucube/babyjubjub-arkPublic Self-hosted repository
babyjubjub-ark/benches/bench_babyjubjub.rs
benches/bench_babyjubjub.rsRaw
 1use criterion::{criterion_group, criterion_main, Criterion};
 2
 3extern crate rand;
 4#[macro_use]
 5extern crate ff;
 6use ff::*;
 7
 8extern crate num;
 9extern crate num_bigint;
10use num_bigint::{BigInt, ToBigInt};
11
12use babyjubjub_rs::{utils, Point};
13
14fn criterion_benchmark(c: &mut Criterion) {
15    let p: Point = Point {
16        x: babyjubjub_rs::Fr::from_str(
17            "17777552123799933955779906779655732241715742912184938656739573121738514868268",
18        )
19        .unwrap(),
20        y: babyjubjub_rs::Fr::from_str(
21            "2626589144620713026669568689430873010625803728049924121243784502389097019475",
22        )
23        .unwrap(),
24    };
25    let q = p.clone();
26
27    let p_projective = p.projective();
28    let q_projective = q.projective();
29
30    c.bench_function("add", |b| b.iter(|| p_projective.add(&q_projective)));
31    let r: BigInt = BigInt::parse_bytes(b"3", 10).unwrap();
32    c.bench_function("mul_scalar_small", |b| b.iter(|| p.mul_scalar(&r)));
33    let r: BigInt = BigInt::parse_bytes(
34        b"2626589144620713026669568689430873010625803728049924121243784502389097019475",
35        10,
36    )
37    .unwrap();
38    c.bench_function("mul_scalar", |b| b.iter(|| p.mul_scalar(&r)));
39
40    c.bench_function("point compress", |b| b.iter(|| p.compress()));
41    let p_comp = p.compress();
42    c.bench_function("point decompress", |b| {
43        b.iter(|| babyjubjub_rs::decompress_point(p_comp))
44    });
45
46    let sk = babyjubjub_rs::new_key();
47    let pk = sk.public().unwrap();
48    let msg = 5.to_bigint().unwrap();
49    c.bench_function("sign", |b| b.iter(|| sk.sign(msg.clone())));
50    let sig = sk.sign(msg.clone()).unwrap();
51    c.bench_function("verify", |b| {
52        b.iter(|| babyjubjub_rs::verify(pk.clone(), sig.clone(), msg.clone()))
53    });
54}
55
56criterion_group!(benches, criterion_benchmark);
57criterion_main!(benches);