Skip to content

Commit

Permalink
fmt, clippy and bench for other hashers
Browse files Browse the repository at this point in the history
  • Loading branch information
shyba committed May 8, 2024
1 parent 97f9a06 commit 869777e
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 26 deletions.
6 changes: 6 additions & 0 deletions benches/no_hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ pub struct NoHasher {
state: u64,
}

impl Default for NoHasher {
fn default() -> Self {
Self::new()
}
}

impl NoHasher {
pub fn new() -> Self {
NoHasher { state: 42 }
Expand Down
19 changes: 17 additions & 2 deletions benches/simple_benchmark.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ mod no_hash;
use balufilter::{blocking::BlockedAtomicFilter, AtomicFilter, BaluFilter};
use bloomfilter::Bloom;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use fastbloom::BloomFilter;
use fastbloom::{BloomFilter, DefaultHasher};
use no_hash::NoHasher;
use std::hash::BuildHasher;

Expand Down Expand Up @@ -34,6 +34,19 @@ pub fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("register blocked check missing", |b| {
b.iter(|| filter.check(&black_box(inverse_cycle.next().unwrap())))
});
let filter: BlockedAtomicFilter<56_547_705, 24, DefaultHasher> =
BlockedAtomicFilter::with_state_and_seed(DefaultHasher::default(), 42);
c.bench_function("register fastbloom_default_hasher blocked insert", |b| {
b.iter(|| filter.insert(&black_box(cycle.next().unwrap())))
});
c.bench_function(
"register fastbloom_default_hasher blocked check present",
|b| b.iter(|| filter.check(&black_box(cycle.next().unwrap()))),
);
c.bench_function(
"register fastbloom_default_hasher blocked check missing",
|b| b.iter(|| filter.check(&black_box(inverse_cycle.next().unwrap()))),
);
let filter: AtomicFilter<BITS_SIZE, 23, NoHasher> =
AtomicFilter::with_state_and_seed(NoHasher::new(), 42);
c.bench_function("nohash insert", |b| {
Expand Down Expand Up @@ -107,7 +120,9 @@ pub fn criterion_benchmark(c: &mut Criterion) {
b.iter(|| bloomfilter.check(black_box(&inverse_cycle.next().unwrap())))
});

let mut bloomfilter = BloomFilter::with_false_pos(rate).hasher(NoHasher::new()).expected_items(1_000_000);
let mut bloomfilter = BloomFilter::with_false_pos(rate)
.hasher(NoHasher::new())
.expected_items(1_000_000);

c.bench_function("fastbloom insert", |b| {
b.iter(|| bloomfilter.insert(black_box(&cycle.next().unwrap())))
Expand Down
20 changes: 10 additions & 10 deletions src/blocking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,19 +116,19 @@ mod test {
#[test]
fn test_blocked_insert_check() {
let filter: BlockedAtomicFilter<320, 8, RandomState> = BlockedAtomicFilter::default();
assert_eq!(false, filter.check(&"tchan"));
assert_eq!(false, filter.insert(&"tchan"));
assert_eq!(true, filter.check(&"tchan"));
assert_eq!(true, filter.insert(&"tchan"));

assert_eq!(false, filter.check(&"molejo"));
assert_eq!(false, filter.insert(&"molejo"));
assert_eq!(true, filter.check(&"molejo"));
assert_eq!(true, filter.insert(&"molejo"));
assert!(!filter.check(&"tchan"));
assert!(!filter.insert(&"tchan"));
assert!(filter.check(&"tchan"));
assert!(filter.insert(&"tchan"));

assert!(!filter.check(&"molejo"));
assert!(!filter.insert(&"molejo"));
assert!(filter.check(&"molejo"));
assert!(filter.insert(&"molejo"));
}

// This test needs --release, otherwise it can take a lot of time
#[cfg(feature="slow-test")]
#[cfg(feature = "slow-test")]
#[test]
fn test_very_large_blocked_filter_insert_does_not_blow_stack() {
let filter: BlockedAtomicFilter<56_547_705, 24, RandomState> =
Expand Down
28 changes: 14 additions & 14 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,14 @@ mod tests {
#[test]
fn test_simple_insert() {
let filter: AtomicFilter<320, 50, RandomState> = AtomicFilter::default();
assert_eq!(false, filter.insert(&"tchan"));
assert_eq!(true, filter.insert(&"tchan"));
assert_eq!(false, filter.insert(&"molejo"));
assert_eq!(true, filter.insert(&"molejo"));
assert!(!filter.insert(&"tchan"));
assert!(filter.insert(&"tchan"));
assert!(!filter.insert(&"molejo"));
assert!(filter.insert(&"molejo"));
}

// This test needs --release, otherwise it can take a lot of time
#[cfg(feature="slow-test")]
#[cfg(feature = "slow-test")]
#[test]
fn test_very_large_filter_insert_does_not_blow_stack() {
let filter: AtomicFilter<33_547_705, 23, RandomState> = AtomicFilter::default();
Expand Down Expand Up @@ -158,15 +158,15 @@ mod tests {
#[test]
fn test_insert_check() {
let filter: AtomicFilter<320, 43, RandomState> = AtomicFilter::default();
assert_eq!(false, filter.check(&"tchan"));
assert_eq!(false, filter.insert(&"tchan"));
assert_eq!(true, filter.check(&"tchan"));
assert_eq!(true, filter.insert(&"tchan"));
assert!(!filter.check(&"tchan"));
assert!(!filter.insert(&"tchan"));
assert!(filter.check(&"tchan"));
assert!(filter.insert(&"tchan"));

assert_eq!(false, filter.check(&"molejo"));
assert_eq!(false, filter.insert(&"molejo"));
assert_eq!(true, filter.check(&"molejo"));
assert_eq!(true, filter.insert(&"molejo"));
assert!(!filter.check(&"molejo"));
assert!(!filter.insert(&"molejo"));
assert!(filter.check(&"molejo"));
assert!(filter.insert(&"molejo"));
}

#[test]
Expand Down Expand Up @@ -228,7 +228,7 @@ mod tests {
}
}
p /= 1_000_000f64;
assert!(p < 0.000002f64 as f64, "P = {} > 0.000002", p);
assert!(p < 0_f64, "P = {} > 0.000002", p);
let mut found = false;
for element in 0..1_000_000 {
if !thread_filter.check(&element) {
Expand Down

0 comments on commit 869777e

Please sign in to comment.