From 34cd43a8f212402af66a9967b677ce4c2ff581f5 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Mon, 11 Dec 2023 18:34:20 +0000 Subject: [PATCH] Fix Pedersen hash benchmark --- Cargo.toml | 4 ++++ benches/pedersen_hash.rs | 39 ++++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 54d2477..9f9f565 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,3 +78,7 @@ test-dependencies = [ "incrementalmerkletree/test-dependencies", "proptest", ] + +[[bench]] +name = "pedersen_hash" +harness = false diff --git a/benches/pedersen_hash.rs b/benches/pedersen_hash.rs index c5968de..5a1f600 100644 --- a/benches/pedersen_hash.rs +++ b/benches/pedersen_hash.rs @@ -1,23 +1,28 @@ -#![feature(test)] - -extern crate rand; -extern crate test; -extern crate pairing; -extern crate sapling_crypto; - -use rand::{Rand, thread_rng}; -use pairing::bls12_381::Bls12; -use sapling_crypto::jubjub::JubjubBls12; +use criterion::{criterion_group, criterion_main, Criterion}; +use rand_core::{OsRng, RngCore}; use sapling_crypto::pedersen_hash::{pedersen_hash, Personalization}; -#[bench] -fn bench_pedersen_hash(b: &mut test::Bencher) { - let params = JubjubBls12::new(); - let rng = &mut thread_rng(); - let bits = (0..510).map(|_| bool::rand(rng)).collect::>(); +#[cfg(unix)] +use pprof::criterion::{Output, PProfProfiler}; + +fn bench_pedersen_hash(c: &mut Criterion) { + let rng = &mut OsRng; + let bits = (0..510) + .map(|_| (rng.next_u32() % 2) != 0) + .collect::>(); let personalization = Personalization::MerkleTree(31); - b.iter(|| { - pedersen_hash::(personalization, bits.clone(), ¶ms) + c.bench_function("pedersen-hash", |b| { + b.iter(|| pedersen_hash(personalization, bits.clone())) }); } + +#[cfg(unix)] +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = bench_pedersen_hash +} +#[cfg(not(unix))] +criterion_group!(benches, bench_pedersen_hash); +criterion_main!(benches);