From a5aa7df51dd6c202d6af3ae133cdb3c5d3fd7693 Mon Sep 17 00:00:00 2001 From: Vinzent Steinberg Date: Fri, 5 May 2017 16:20:44 +0200 Subject: [PATCH] Make benchmarks work on stable --- Cargo.toml | 5 +++++ benches/average.rs | 39 +++++++++++++++++++++++++++++++++++++++ src/lib.rs | 35 ----------------------------------- 3 files changed, 44 insertions(+), 35 deletions(-) create mode 100644 benches/average.rs diff --git a/Cargo.toml b/Cargo.toml index d97e682..156c503 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,5 +12,10 @@ keywords = ["statistics", "stats"] conv = "0.3" [dev-dependencies] +bencher = "0.1" rand = "0.3" streaming-stats = "0.1" + +[[bench]] +name = "average" +harness = false diff --git a/benches/average.rs b/benches/average.rs new file mode 100644 index 0000000..59401a8 --- /dev/null +++ b/benches/average.rs @@ -0,0 +1,39 @@ +#[macro_use] extern crate bencher; +extern crate rand; + +extern crate average; +extern crate stats; + +use bencher::Bencher; + +fn initialize_vec() -> Vec { + use rand::distributions::{Normal, IndependentSample}; + use rand::{XorShiftRng, SeedableRng}; + let normal = Normal::new(2.0, 3.0); + let n = 1_000_000; + let mut values = Vec::with_capacity(n); + let mut rng = XorShiftRng::from_seed([1, 2, 3, 4]); + for _ in 0..n { + values.push(normal.ind_sample(&mut rng)); + } + values +} + +fn bench_average(b: &mut Bencher) { + let values = initialize_vec(); + b.iter(|| { + let a: average::Average = values.iter().map(|x| *x).collect(); + a + }); +} + +fn bench_stats(b: &mut Bencher) { + let values = initialize_vec(); + b.iter(|| { + let a: stats::OnlineStats = values.iter().map(|x| *x).collect(); + a + }); +} + +benchmark_group!(benches, bench_average, bench_stats); +benchmark_main!(benches); diff --git a/src/lib.rs b/src/lib.rs index 66c19bb..72dba89 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,8 @@ #![no_std] -#![feature(test)] extern crate conv; #[cfg(test)] extern crate rand; #[cfg(test)] #[macro_use] extern crate std; -#[cfg(test)] extern crate stats; -#[cfg(test)] extern crate test; use conv::ApproxFrom; @@ -159,7 +156,6 @@ mod tests { use super::*; use core::iter::Iterator; - use std::vec::Vec; #[test] fn average_trivial() { @@ -216,35 +212,4 @@ mod tests { assert_eq!(avg_total.v, avg_left.v); } } - - fn initialize_vec() -> Vec { - use rand::distributions::{Normal, IndependentSample}; - use rand::{XorShiftRng, SeedableRng}; - let normal = Normal::new(2.0, 3.0); - let n = 1_000_000; - let mut values = Vec::with_capacity(n); - let mut rng = XorShiftRng::from_seed([1, 2, 3, 4]); - for _ in 0..n { - values.push(normal.ind_sample(&mut rng)); - } - values - } - - #[bench] - fn bench_average(b: &mut test::Bencher) { - let values = initialize_vec(); - b.iter(|| { - let a: Average = values.iter().map(|x| *x).collect(); - a - }); - } - - #[bench] - fn bench_stats(b: &mut test::Bencher) { - let values = initialize_vec(); - b.iter(|| { - let a: stats::OnlineStats = values.iter().map(|x| *x).collect(); - a - }); - } }