algorithm 0.1.18

about algorithm data structure, now has ttl with lru/lru-k/lfu/arc and slab/rbtree/roaring_bitmap/timer_wheelss, 关于算法常用的数据结构
Documentation
// bench.rs
#![feature(test)]

extern crate test;

use algorithm::{ArcCache, LfuCache, LruCache, LruKCache};
use test::Bencher;

static BENCH_SIZE: usize = 10000;

macro_rules! do_test_bench {
    ($cache: expr) => {
        for i in 0..BENCH_SIZE {
            $cache.insert(i, i);
            $cache.get(&i);
        }
    };
}
#[bench]
fn calc_lru(b: &mut Bencher) {
    b.iter(|| {
        let mut lru = LruCache::new(BENCH_SIZE / 2);
        do_test_bench!(lru);
    })
}


#[bench]
fn calc_lruk(b: &mut Bencher) {
    b.iter(|| {
        let mut lruk = LruKCache::new(BENCH_SIZE / 2);
        do_test_bench!(lruk);
    })
}

#[bench]
fn calc_lfu(b: &mut Bencher) {
    b.iter(|| {
        let mut lfu = LfuCache::new(BENCH_SIZE / 2);
        do_test_bench!(lfu);
    })
}

#[bench]
fn calc_arc(b: &mut Bencher) {
    b.iter(|| {
        let mut arc = ArcCache::new(BENCH_SIZE / 2);
        do_test_bench!(arc);
    })
}