#![feature(test)]
extern crate test;
use test::Bencher;
use randomize::*;
use std::time::{SystemTime, UNIX_EPOCH};
pub fn u64_from_time() -> u64 {
let unix_delta = match SystemTime::now().duration_since(UNIX_EPOCH) {
Ok(duration) => duration,
Err(system_time_error) => system_time_error.duration(),
};
if unix_delta.subsec_nanos() != 0 {
unix_delta.as_secs().wrapping_mul(unix_delta.subsec_nanos() as u64)
} else {
unix_delta.as_secs()
}
}
#[bench]
fn bench_lcg64_xsh_rr_64_32(b: &mut Bencher) {
let mut gen = PCGPickU64::from(u64_from_time());
b.iter(|| {
for _ in 0..1000 {
gen.next_u32();
}
});
}
#[bench]
fn bench_lcg64_xsh_rs_64_32(b: &mut Bencher) {
let mut gen = PCGPickU64::from(u64_from_time());
b.iter(|| {
for _ in 0..1000 {
gen.next_u32shift();
}
});
}
#[bench]
fn bench_lcg64_xsl_rr_64_32(b: &mut Bencher) {
let mut gen = PCGPickU64::from(u64_from_time());
b.iter(|| {
for _ in 0..1000 {
gen.next_u32xslrr();
}
});
}