std::rand: share the benchmark counter among the whole module tree.

This commit is contained in:
Huon Wilson 2013-11-01 21:33:13 +11:00
parent cd50fb39b5
commit 3c25baa540
3 changed files with 21 additions and 24 deletions

View file

@ -182,12 +182,11 @@ mod bench {
use super::*;
use mem::size_of;
use rand::distributions::IndependentSample;
use rand::StdRng;
use rand::{StdRng, RAND_BENCH_N};
use extra::test::BenchHarness;
use iter::range;
use option::{Some, None};
static N: u64 = 100;
#[bench]
fn bench_gamma_large_shape(bh: &mut BenchHarness) {
@ -195,11 +194,11 @@ mod bench {
let mut rng = StdRng::new();
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
gamma.ind_sample(&mut rng);
}
}
bh.bytes = size_of::<f64>() as u64 * N;
bh.bytes = size_of::<f64>() as u64 * RAND_BENCH_N;
}
#[bench]
@ -208,10 +207,10 @@ mod bench {
let mut rng = StdRng::new();
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
gamma.ind_sample(&mut rng);
}
}
bh.bytes = size_of::<f64>() as u64 * N;
bh.bytes = size_of::<f64>() as u64 * RAND_BENCH_N;
}
}

View file

@ -556,25 +556,23 @@ mod tests {
#[cfg(test)]
mod bench {
use extra::test::BenchHarness;
use rand::*;
use rand::{XorShiftRng, RAND_BENCH_N};
use super::*;
use iter::range;
use option::{Some, None};
use mem::size_of;
static N: u64 = 100;
#[bench]
fn rand_normal(bh: &mut BenchHarness) {
let mut rng = XorShiftRng::new();
let mut normal = Normal::new(-2.71828, 3.14159);
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
normal.sample(&mut rng);
}
}
bh.bytes = size_of::<f64>() as u64 * N;
bh.bytes = size_of::<f64>() as u64 * RAND_BENCH_N;
}
#[bench]
fn rand_exp(bh: &mut BenchHarness) {
@ -582,10 +580,10 @@ mod bench {
let mut exp = Exp::new(2.71828 * 3.14159);
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
exp.sample(&mut rng);
}
}
bh.bytes = size_of::<f64>() as u64 * N;
bh.bytes = size_of::<f64>() as u64 * RAND_BENCH_N;
}
}

View file

@ -833,58 +833,58 @@ mod test {
}
}
static RAND_BENCH_N: u64 = 100;
#[cfg(test)]
mod bench {
use extra::test::BenchHarness;
use rand::*;
use rand::{XorShiftRng, StdRng, IsaacRng, Isaac64Rng, Rng, RAND_BENCH_N};
use mem::size_of;
use iter::range;
use option::{Some, None};
static N: u64 = 100;
#[bench]
fn rand_xorshift(bh: &mut BenchHarness) {
let mut rng = XorShiftRng::new();
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
rng.gen::<uint>();
}
}
bh.bytes = size_of::<uint>() as u64 * N;
bh.bytes = size_of::<uint>() as u64 * RAND_BENCH_N;
}
#[bench]
fn rand_isaac(bh: &mut BenchHarness) {
let mut rng = IsaacRng::new();
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
rng.gen::<uint>();
}
}
bh.bytes = size_of::<uint>() as u64 * N;
bh.bytes = size_of::<uint>() as u64 * RAND_BENCH_N;
}
#[bench]
fn rand_isaac64(bh: &mut BenchHarness) {
let mut rng = Isaac64Rng::new();
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
rng.gen::<uint>();
}
}
bh.bytes = size_of::<uint>() as u64 * N;
bh.bytes = size_of::<uint>() as u64 * RAND_BENCH_N;
}
#[bench]
fn rand_std(bh: &mut BenchHarness) {
let mut rng = StdRng::new();
do bh.iter {
for _ in range(0, N) {
for _ in range(0, RAND_BENCH_N) {
rng.gen::<uint>();
}
}
bh.bytes = size_of::<uint>() as u64 * N;
bh.bytes = size_of::<uint>() as u64 * RAND_BENCH_N;
}
#[bench]