use criterion::{criterion_group, criterion_main, Criterion}; extern crate rand; #[macro_use] extern crate ff; use ff::*; extern crate num; extern crate num_bigint; use num_bigint::BigInt; use babyjubjub_rs::{utils, Point}; fn criterion_benchmark(c: &mut Criterion) { // let x: BigInt = BigInt::parse_bytes( // b"17777552123799933955779906779655732241715742912184938656739573121738514868268", // 10, // ) // .unwrap(); // c.bench_function("modulus", |b| { // b.iter(|| utils::modulus(&x, &babyjubjub_rs::Q)) // }); let p: Point = Point { x: babyjubjub_rs::Fr::from_str( "17777552123799933955779906779655732241715742912184938656739573121738514868268", ) .unwrap(), y: babyjubjub_rs::Fr::from_str( "2626589144620713026669568689430873010625803728049924121243784502389097019475", ) .unwrap(), z: babyjubjub_rs::Fr::one(), }; let q = p.clone(); c.bench_function("add", |b| b.iter(|| p.add(&q))); let r: BigInt = BigInt::parse_bytes(b"3", 10).unwrap(); c.bench_function("mul_scalar_small", |b| b.iter(|| p.mul_scalar(&r))); let r: BigInt = BigInt::parse_bytes( b"2626589144620713026669568689430873010625803728049924121243784502389097019475", 10, ) .unwrap(); c.bench_function("mul_scalar", |b| b.iter(|| p.mul_scalar(&r))); // c.bench_function("compress", |b| b.iter(|| p.compress())); // let p_comp = p.compress(); // c.bench_function("decompress", |b| { // b.iter(|| babyjubjub_rs::decompress_point(p_comp)) // }); // let sk = babyjubjub_rs::new_key(); // let pk = sk.public().unwrap(); // let msg = 5.to_bigint().unwrap(); // c.bench_function("sign_poseidon", |b| { // b.iter(|| sk.sign_poseidon(msg.clone())) // }); // let sig = sk.sign_poseidon(msg.clone()).unwrap(); // c.bench_function("verify_poseidon", |b| { // b.iter(|| babyjubjub_rs::verify_poseidon(pk.clone(), sig.clone(), msg.clone())) // }); } criterion_group!(benches, criterion_benchmark); criterion_main!(benches);