use std::time::Duration; use criterion::{criterion_group, criterion_main, Criterion}; use bitssset; fn bitssset_bench(c: &mut Criterion) { let mut group = c.benchmark_group("bitssset"); type BS = bitssset::Bitset::<256>; group.bench_function("AND", |b| { let lhs = BS::with_bit_set(57); let rhs = BS::with_bit_set(67); b.iter(|| lhs & rhs) }); group.bench_function("AND_ASSIGN", |b| { let mut lhs = BS::with_bit_set(57); let rhs = BS::with_bit_set(67); b.iter(|| {lhs &= rhs; lhs}) }); group.bench_function("OR", |b| { let lhs = BS::with_bit_set(57); let rhs = BS::with_bit_set(67); b.iter(|| lhs | rhs) }); group.bench_function("OR_ASSIGN", |b| { let mut lhs = BS::with_bit_set(57); let rhs = BS::with_bit_set(67); b.iter(|| {lhs |= rhs; lhs}) }); group.bench_function("XOR", |b| { let lhs = BS::with_bit_set(57); let rhs = BS::with_bit_set(67); b.iter(|| lhs ^ rhs) }); group.bench_function("XOR_ASSIGN", |b| { let mut lhs = BS::with_bit_set(57); let rhs = BS::with_bit_set(67); b.iter(|| {lhs ^= rhs; lhs}) }); group.bench_function("SHL", |b| { let mut set = BS::with_bit_set(57); set.set_bit(67); b.iter(|| set << 11) }); group.bench_function("SHL_ASSIGN", |b| { let mut set = BS::with_bit_set(57); set.set_bit(67); b.iter(|| {set <<= 11; set}) }); group.bench_function("SHR", |b| { let mut set = BS::with_bit_set(57); set.set_bit(67); b.iter(|| set >> 11) }); group.bench_function("SHR_ASSIGN", |b| { let mut set = BS::with_bit_set(57); set.set_bit(67); b.iter(|| {set >>= 11; set}) }); } criterion_group!( name = benches; config = Criterion::default() .warm_up_time(Duration::from_millis(3000)) .measurement_time(Duration::from_millis(5000)) .without_plots(); targets = bitssset_bench ); criterion_main!(benches);