diff --git a/Cargo.toml b/Cargo.toml index d823ef0..68eb873 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,10 @@ name = "mean" harness = false name = "min" +[[bench]] +harness = false +name = "kurtosis" + [dependencies] num-traits = "0.1" num-integer = "0.1" diff --git a/benches/kurtosis.rs b/benches/kurtosis.rs new file mode 100644 index 0000000..0dfb3e5 --- /dev/null +++ b/benches/kurtosis.rs @@ -0,0 +1,41 @@ +#![cfg_attr(feature = "cargo-clippy", allow(float_cmp, map_clone))] + +#[macro_use] extern crate bencher; +extern crate rand; + +extern crate average; + +use bencher::Bencher; + +/// Create a random vector by sampling from a normal distribution. +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_kurtosis(b: &mut Bencher) { + let values = initialize_vec(); + b.iter(|| { + let m: average::Kurtosis = values.iter().map(|x| *x).collect(); + m + }); +} + +fn bench_moments(b: &mut Bencher) { + let values = initialize_vec(); + b.iter(|| { + let m: average::Moments = values.iter().map(|x| *x).collect(); + m + }); +} + +benchmark_group!(benches, bench_kurtosis, bench_moments); +benchmark_main!(benches); diff --git a/src/lib.rs b/src/lib.rs index e348cff..93191c9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -74,8 +74,7 @@ #![cfg_attr(feature = "cargo-clippy", allow(float_cmp))] -//#![no_std] -extern crate core; +#![no_std] extern crate conv; extern crate quickersort; diff --git a/src/moments/kurtosis.rs b/src/moments/kurtosis.rs index 9cb1a24..acdc9d0 100644 --- a/src/moments/kurtosis.rs +++ b/src/moments/kurtosis.rs @@ -46,7 +46,6 @@ impl Kurtosis { + 6. * delta_n_sq * self.avg.avg.sum_2 - 4. * delta_n * self.avg.sum_3; self.avg.add_inner(delta, delta_n); - println!("skewness={} kurtosis={}", self.skewness(), self.kurtosis()); } /// Determine whether the sample is empty.