@ -1,41 +1,42 @@
use criterion ::{ criterion_group , criterion_main , Criterion } ;
extern crate rand ;
#[ macro_use ]
extern crate ff ;
use ff ::* ;
extern crate num ;
extern crate num_bigint ;
extern crate num_traits ;
use num_bigint ::{ BigInt , ToBigInt } ;
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 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 : BigInt ::parse_bytes (
b" 17777552123799933955779906779655732241715742912184938656739573121738514868268 " ,
10 ,
x : babyjubjub_rs ::Fr ::from_str (
"17777552123799933955779906779655732241715742912184938656739573121738514868268" ,
)
. unwrap ( ) ,
y : BigInt ::parse_bytes (
b" 2626589144620713026669568689430873010625803728049924121243784502389097019475 " ,
10 ,
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 ) ) ) ;
c . bench_function ( "mul_scalar_small" , | b | {
b . iter ( | | p . mul_scalar ( & 3. to_bigint ( ) . unwrap ( ) ) )
} ) ;
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 ,
@ -43,16 +44,22 @@ fn criterion_benchmark(c: &mut Criterion) {
. unwrap ( ) ;
c . bench_function ( "mul_scalar" , | b | b . iter ( | | p . mul_scalar ( & r ) ) ) ;
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 ( ) ) )
} ) ;
// 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 ) ;