From 076e104b8672924c3d80cd1da2fdb5ebee1766ac Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Thu, 24 Aug 2023 17:00:31 -0400 Subject: Migrated over to using psudb-common utilities/headers --- include/ds/BloomFilter.h | 75 ------------------------------------------------ 1 file changed, 75 deletions(-) delete mode 100644 include/ds/BloomFilter.h (limited to 'include/ds/BloomFilter.h') diff --git a/include/ds/BloomFilter.h b/include/ds/BloomFilter.h deleted file mode 100644 index f7e1c08..0000000 --- a/include/ds/BloomFilter.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * include/ds/BloomFilter.h - * - * Copyright (C) 2023 Dong Xie - * - * All rights reserved. Published under the Modified BSD License. - * - */ -#pragma once - -#include -#include - -#include "ds/BitArray.h" -#include "util/hash.h" - -namespace de { - -template -class BloomFilter { -public: - BloomFilter(size_t n_bits, size_t k) - : m_n_bits(n_bits), m_n_salts(k), m_bitarray(n_bits) { - gsl_rng *rng = gsl_rng_alloc(gsl_rng_mt19937); - salt = (uint16_t*) aligned_alloc(CACHELINE_SIZE, CACHELINEALIGN(k * sizeof(uint16_t))); - for (size_t i = 0; i < k; ++i) { - salt[i] = (uint16_t) gsl_rng_uniform_int(rng, 1 << 16); - } - - gsl_rng_free(rng); - } - - BloomFilter(double max_fpr, size_t n, size_t k) - : BloomFilter((size_t)(-(double) (k * n) / std::log(1.0 - std::pow(max_fpr, 1.0 / k))), k) {} - - ~BloomFilter() { - if (salt) free(salt); - } - - int insert(const K& key, size_t sz = sizeof(K)) { - if (m_bitarray.size() == 0) return 0; - - for (size_t i = 0; i < m_n_salts; ++i) { - m_bitarray.set(hash_bytes_with_salt((const char*)&key, sz, salt[i]) % m_n_bits); - } - - return 1; - } - - bool lookup(const K& key, size_t sz = sizeof(K)) { - if (m_bitarray.size() == 0) return false; - for (size_t i = 0; i < m_n_salts; ++i) { - if (!m_bitarray.is_set(hash_bytes_with_salt((const char*)&key, sz, salt[i]) % m_n_bits)) - return false; - } - - return true; - } - - void clear() { - m_bitarray.clear(); - } - - size_t get_memory_usage() { - return this->m_bitarray.mem_size(); - } -private: - size_t m_n_salts; - size_t m_n_bits; - uint16_t* salt; - - BitArray m_bitarray; -}; - -} -- cgit v1.2.3