From 099ff629b61d509f2d1f9cd8ad7303f312cfd735 Mon Sep 17 00:00:00 2001 From: Pierre Krieger <pierre.krieger1708@gmail.com> Date: Thu, 9 May 2019 18:58:45 +0200 Subject: [PATCH] Add some benchmarks for ed25519 in substrate_primitives (#2520) * Add some benchmarks for ed25519 * We don't need the Debug impl * Add multiple message sizes --- substrate/core/primitives/benches/benches.rs | 23 +++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/substrate/core/primitives/benches/benches.rs b/substrate/core/primitives/benches/benches.rs index c86a99cc4e4..4a003257e2b 100644 --- a/substrate/core/primitives/benches/benches.rs +++ b/substrate/core/primitives/benches/benches.rs @@ -18,6 +18,7 @@ extern crate criterion; use criterion::{Criterion, black_box, Bencher, Fun}; use std::time::Duration; +use substrate_primitives::crypto::Pair as _; use substrate_primitives::hashing::{twox_128, blake2_128}; const MAX_KEY_SIZE: u32 = 32; @@ -65,9 +66,29 @@ fn bench_hash_128_dyn_size(c: &mut Criterion) { c.bench_function_over_inputs("dyn size hashing - twox", |b, key| bench_twox_128(b, &key), keys); } +fn bench_ed25519(c: &mut Criterion) { + c.bench_function_over_inputs("signing - ed25519", |b, &msg_size| { + let msg = (0..msg_size) + .map(|_| rand::random::<u8>()) + .collect::<Vec<_>>(); + let key = substrate_primitives::ed25519::Pair::generate(); + b.iter(|| key.sign(&msg)) + }, vec![32, 1024, 1024 * 1024]); + + c.bench_function_over_inputs("verifying - ed25519", |b, &msg_size| { + let msg = (0..msg_size) + .map(|_| rand::random::<u8>()) + .collect::<Vec<_>>(); + let key = substrate_primitives::ed25519::Pair::generate(); + let sig = key.sign(&msg); + let public = key.public(); + b.iter(|| substrate_primitives::ed25519::Pair::verify(&sig, &msg, &public)) + }, vec![32, 1024, 1024 * 1024]); +} + criterion_group!{ name = benches; config = Criterion::default().warm_up_time(Duration::from_millis(500)).without_plots(); - targets = bench_hash_128_fix_size, bench_hash_128_dyn_size + targets = bench_hash_128_fix_size, bench_hash_128_dyn_size, bench_ed25519 } criterion_main!(benches); -- GitLab