From 2104dd5a0ab71ae80101e84434f025a466dd7eeb Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Sat, 3 Mar 2018 11:45:21 -0700 Subject: [PATCH 1/3] Fix benchmark Was measuring the creation of the iterator, not running it. --- src/bin/client-demo.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/bin/client-demo.rs b/src/bin/client-demo.rs index ab5f1a48e..93e505614 100644 --- a/src/bin/client-demo.rs +++ b/src/bin/client-demo.rs @@ -22,13 +22,16 @@ fn main() { let one = 1; println!("Signing transactions..."); let now = Instant::now(); - let sigs = (0..txs).map(|_| { - let rando_keypair = generate_keypair(); - let rando_pubkey = get_pubkey(&rando_keypair); - let sig = sign_transaction_data(&one, &alice_keypair, &rando_pubkey); - (rando_pubkey, sig) - }); + let sigs: Vec<(_, _)> = (0..txs) + .map(|_| { + let rando_keypair = generate_keypair(); + let rando_pubkey = get_pubkey(&rando_keypair); + let sig = sign_transaction_data(&one, &alice_keypair, &rando_pubkey); + (rando_pubkey, sig) + }) + .collect(); let duration = now.elapsed(); + let ns = duration.as_secs() * 1_000_000_000 + duration.subsec_nanos() as u64; let bsps = txs as f64 / ns as f64; let nsps = ns as f64 / txs as f64; From c10faae3b504eeef8fc7a565eab466eaaf47b399 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Sat, 3 Mar 2018 11:52:46 -0700 Subject: [PATCH 2/3] More readable metrics --- src/bin/client-demo.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/bin/client-demo.rs b/src/bin/client-demo.rs index 93e505614..f18ae89d9 100644 --- a/src/bin/client-demo.rs +++ b/src/bin/client-demo.rs @@ -36,8 +36,9 @@ fn main() { let bsps = txs as f64 / ns as f64; let nsps = ns as f64 / txs as f64; println!( - "Done. {} billion signatures per second, {}ns per signature", - bsps, nsps + "Done. {} thousand signatures per second, {}us per signature", + bsps * 1_000_000_f64, + nsps / 1_000_f64 ); println!("Transferring 1 unit {} times...", txs); From 1c9b5ab53c0ac07dcf2fbdb3db038aaf5a1b5692 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Sat, 3 Mar 2018 11:59:34 -0700 Subject: [PATCH 3/3] Report performance of signature verification too --- src/bin/client-demo.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/bin/client-demo.rs b/src/bin/client-demo.rs index f18ae89d9..e40d83767 100644 --- a/src/bin/client-demo.rs +++ b/src/bin/client-demo.rs @@ -31,7 +31,6 @@ fn main() { }) .collect(); let duration = now.elapsed(); - let ns = duration.as_secs() * 1_000_000_000 + duration.subsec_nanos() as u64; let bsps = txs as f64 / ns as f64; let nsps = ns as f64 / txs as f64; @@ -41,6 +40,28 @@ fn main() { nsps / 1_000_f64 ); + println!("Verify signatures..."); + use silk::event::{verify_event, Event}; + let now = Instant::now(); + for &(k, s) in &sigs { + let e = Event::Transaction { + from: Some(alice_pubkey), + to: k, + data: one, + sig: s, + }; + assert!(verify_event(&e)); + } + let duration = now.elapsed(); + let ns = duration.as_secs() * 1_000_000_000 + duration.subsec_nanos() as u64; + let bsvps = txs as f64 / ns as f64; + let nspsv = ns as f64 / txs as f64; + println!( + "Done. {} thousand signature verifications per second, {}us per signature verification", + bsvps * 1_000_000_f64, + nspsv / 1_000_f64 + ); + println!("Transferring 1 unit {} times...", txs); let now = Instant::now(); let mut sig = sig;