#![feature(test)]
extern crate test;
use test::Bencher;
use tlid::{Checked, Pool, UnChecked, Wrapping};
#[bench]
fn checked_inc(b: &mut Bencher) {
let mut pool = Pool::<Checked<u64>>::new_full();
b.iter(|| pool.next().unwrap());
}
#[bench]
fn unchecked_inc(b: &mut Bencher) {
let mut pool = Pool::<UnChecked<u64>>::new_full();
b.iter(|| pool.next());
}
#[bench]
fn wraparound_inc(b: &mut Bencher) {
let mut pool = Pool::<Wrapping<u64>>::new_full();
b.iter(|| pool.next());
}
#[bench]
fn subpool(b: &mut Bencher) {
let mut pool = Pool::<Checked<u64>>::new_full();
b.iter(|| pool.subpool(1000000).unwrap());
}
#[bench]
fn time_for_1_000_000_000_runs_checked(_b: &mut Bencher) {
use std::time::Instant;
let before = Instant::now();
{
let mut pool = Pool::<Checked<u64>>::new_full();
for _ in 0..1000000000 {
test::black_box(pool.next().unwrap());
}
}
let after = Instant::now();
let diff = after.duration_since(before);
println!("diff: {}s", diff.as_millis() as f64 / 1000.0);
}
#[bench]
fn time_for_1_000_000_000_runs_unchecked(_b: &mut Bencher) {
use std::time::Instant;
let before = Instant::now();
{
let mut pool = Pool::<UnChecked<u64>>::new_full();
for _ in 0..1000000000 {
test::black_box(pool.next());
}
}
let after = Instant::now();
let diff = after.duration_since(before);
println!("diff: {}s", diff.as_millis() as f64 / 1000.0);
}