diff --git a/bencher/src/database.rs b/bencher/src/database.rs index f3a8b46e..48bc9c4c 100644 --- a/bencher/src/database.rs +++ b/bencher/src/database.rs @@ -8,6 +8,8 @@ pub fn fetch(benchmark: &mut Benchmark) { // params const BLOCKS: usize = 1000; + benchmark.samples(BLOCKS); + // test setup let path = RandomTempPath::create_dir(); let store = Storage::new(path.as_path()).unwrap(); @@ -49,6 +51,7 @@ pub fn fetch(benchmark: &mut Benchmark) { pub fn write(benchmark: &mut Benchmark) { // params const BLOCKS: usize = 1000; + benchmark.samples(BLOCKS); // setup let path = RandomTempPath::create_dir(); @@ -84,6 +87,7 @@ pub fn write(benchmark: &mut Benchmark) { pub fn reorg_short(benchmark: &mut Benchmark) { // params const BLOCKS: usize = 1000; + benchmark.samples(BLOCKS); // setup let path = RandomTempPath::create_dir(); @@ -166,6 +170,8 @@ pub fn write_heavy(benchmark: &mut Benchmark) { const BLOCKS: usize = 100; const TRANSACTIONS: usize = 100; + benchmark.samples(BLOCKS); + // test setup let path = RandomTempPath::create_dir(); let store = Storage::new(path.as_path()).unwrap(); diff --git a/bencher/src/main.rs b/bencher/src/main.rs index 7749d8f5..e37f119e 100644 --- a/bencher/src/main.rs +++ b/bencher/src/main.rs @@ -14,6 +14,7 @@ use std::str; pub struct Benchmark { start: Option, end: Option, + samples: Option, } impl Benchmark { @@ -28,6 +29,10 @@ impl Benchmark { pub fn evaluate(&self) -> Duration { self.start.expect("benchmarch never ended").to(self.end.expect("benchmark never started")) } + + pub fn samples(&mut self, samples: usize) { + self.samples = Some(samples); + } } fn decimal_mark(s: String) -> String { @@ -44,7 +49,14 @@ fn run_benchmark(name: &str, f: F) where F: FnOnce(&mut Benchmark) { let mut benchmark = Benchmark::default(); f(&mut benchmark); - println!("{} ns", decimal_mark(format!("{}", benchmark.evaluate().num_nanoseconds().unwrap()))); + if let Some(samples) = benchmark.samples { + println!("{} ns/sample", + decimal_mark(format!("{}", benchmark.evaluate().num_nanoseconds().unwrap() / samples as i64)), + ); + } + else { + println!("{} ns", decimal_mark(format!("{}", benchmark.evaluate().num_nanoseconds().unwrap()))); + } } macro_rules! benchmark {