#![feature(min_const_generics)] #![feature(let_chains)] #[macro_use] extern crate criterion; use criterion::{BenchmarkId, Criterion}; use fastrand; use fusefilter::*; pub fn fusefilter_new(c: &mut Criterion) { //const size: usize = 300000; const size: usize = 10; let mut group = c.benchmark_group("fusefilter_new"); let group = group.sample_size(size); let keys = create_keys::(); group.bench_with_input(BenchmarkId::new("fusefilter_new", size), &keys, |b, keys| { b.iter(|| Fuse::::try_from(&*keys)); }); } pub fn fusefilter_contains(c: &mut Criterion) { //const size: usize = 300000; const size: usize = 10; let mut group = c.benchmark_group("fusefilter_contains"); let group = group.sample_size(size); let mut keys = [0; size]; for i in 0..size { keys[i] = fastrand::u64(..); } let f: Fuse = Fuse::try_from(&keys); group.bench_function(BenchmarkId::new("fusefilter_contains", size), |b| { let key: u64 = fastrand::u64(..); b.iter(|| f.contains(&key)); }); } fn create_keys() -> [u64; N] { let mut keys = [0; N]; for i in 0..N { keys[i] = fastrand::u64(..); } keys } criterion_group!(fusefilter, fusefilter_new, fusefilter_contains); criterion_main!(fusefilter);