From e7d7d01a027ce6445a8865a881f78ef6910815d8 Mon Sep 17 00:00:00 2001 From: Pratyush Mishra Date: Wed, 16 Dec 2020 11:39:29 -0800 Subject: [PATCH] Add MSM benchmark (#24) --- curve-benches/Cargo.toml | 1 + curve-benches/src/macros/ec.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/curve-benches/Cargo.toml b/curve-benches/Cargo.toml index 7a88bb5..efe749b 100644 --- a/curve-benches/Cargo.toml +++ b/curve-benches/Cargo.toml @@ -47,6 +47,7 @@ rand_xorshift = { version = "0.2" } [features] asm = [ "ark-ff/asm"] +parallel = [ "ark-ff/parallel", "ark-ec/parallel", ] n_fold = [] [build-dependencies] diff --git a/curve-benches/src/macros/ec.rs b/curve-benches/src/macros/ec.rs index 429b9ab..9227e16 100644 --- a/curve-benches/src/macros/ec.rs +++ b/curve-benches/src/macros/ec.rs @@ -178,6 +178,22 @@ macro_rules! ec_bench { }); } + fn msm_131072(b: &mut $crate::bencher::Bencher) { + use ark_serialize::{CanonicalDeserialize, CanonicalSerialize}; + const SAMPLES: usize = 131072; + + let mut rng = XorShiftRng::seed_from_u64(1231275789u64); + + let g = <$projective>::rand(&mut rng).into_affine(); + let v: Vec<_> = (0..SAMPLES).map(|_| g).collect(); + let scalars: Vec<_> = (0..SAMPLES) + .map(|_| Fr::rand(&mut rng).into_repr()) + .collect(); + b.bench_n(1, |b| { + b.iter(|| ark_ec::msm::VariableBaseMSM::multi_scalar_mul(&v, &scalars)); + }) + } + $crate::benchmark_group!( group_ops, rand, @@ -188,6 +204,7 @@ macro_rules! ec_bench { deser, ser_unchecked, deser_unchecked, + msm_131072, ); }; }