wheel_timer 0.3.1

A simple hashed wheel timer.
Documentation
#![feature(test)]

extern crate test;
extern crate wheel_timer;

use test::Bencher;

use wheel_timer::WheelTimer;

#[bench]
fn bench_wheel_timer_drain(b: &mut Bencher) {
  let max_interval = 20;
  let mut timer = WheelTimer::new(max_interval);

  b.iter(|| {
    // Fill
    for j in 0..100 {
      timer.schedule(j%max_interval, j%max_interval);
    }

    // Drain
    for _ in 0..100 {
      timer.tick();
    }
  });
}

#[bench]
fn bench_wheel_timer_fill(b: &mut Bencher) {
  let max_interval = 20;
  let mut timer = WheelTimer::new(max_interval);
  let mut i = 0;

  b.iter(|| {
    timer.schedule(i%max_interval, i%max_interval);
    i = i + 1;
  });
}

#[bench]
fn bench_wheel_timer_fast(b: &mut Bencher) {
  let max_interval = 2;
  let mut timer = WheelTimer::new(max_interval);
  let mut i = 0;

  b.iter(|| {
    timer.schedule(i%max_interval, i%max_interval);
    timer.tick();
    i = i + 1;
  });
}