cask 0.7.0

A fast key-value store backed by a log-structured hash table
Documentation
#![feature(test)]

extern crate cask;
extern crate rand;
extern crate test;

use std::fs;

use cask::CaskOptions;
use rand::Rng;
use test::Bencher;

#[bench]
fn get_latency(b: &mut Bencher) {
    let id: String = rand::thread_rng().gen_ascii_chars().take(16).collect();
    let path = format!("bench-{}.db", id);

    let cask = CaskOptions::default()
        .compaction_check_frequency(1)
        .max_file_size(50 * 1024 * 1024)
        .open(&path)
        .unwrap();

    let key = vec![1u8; 512];
    let vec = vec![1u8; 4096];

    cask.put(key.clone(), &vec).unwrap();

    b.bytes = vec.len() as u64;
    b.iter(|| cask.get(&key).unwrap());

    fs::remove_dir_all(path).unwrap();
}

#[bench]
fn put_latency(b: &mut Bencher) {
    let id: String = rand::thread_rng().gen_ascii_chars().take(16).collect();
    let path = format!("bench-{}.db", id);

    let cask = CaskOptions::default()
        .compaction_check_frequency(1)
        .max_file_size(50 * 1024 * 1024)
        .open(&path)
        .unwrap();

    let key = vec![1u8; 512];
    let vec = vec![1u8; 4096];

    b.bytes = vec.len() as u64;
    b.iter(|| cask.put(key.clone(), &vec).unwrap());

    fs::remove_dir_all(path).unwrap();
}