36#include <gtest/gtest.h>
81 size_t num_buckets =
cf.capacity() / 4;
98 for (
int i = 0; i < 100; ++i)
103 for (
int i = 0; i < 100; ++i)
111 for (
int i = 0; i < 100; ++i)
115 for (
int i = 1000; i < 2000; ++i)
158 for (
int i = 0; i < 50; ++i)
161 for (
int i = 0; i < 50; ++i)
170 for (
int i = 0; i < 50; ++i)
173 for (
int i = 0; i < 50; ++i)
241 for (
int i = 0; i < 100; ++i)
245 for (
int i = 0; i < 100; i += 2)
251 for (
int i = 1; i < 100; i += 2)
255 for (
int i = 0; i < 100; i += 2)
269 for (
int i = 0; i < 50; ++i)
273 double lf =
cf.load_factor();
284 for (
int i = 0; i < 1000; ++i)
300 for (
int i = 0; i < 200; ++i)
318 size_t num_buckets =
cf.capacity() / 4;
319 size_t expected = (num_buckets * 4 * 8 + 7) / 8;
328 for (
int i = 0; i < 100; ++i)
331 double lf =
cf.load_factor();
343 for (
int i = 0; i < 30; ++i)
350 for (
int i = 0; i < 30; ++i)
357 for (
int i = 0; i < 30; ++i)
364 for (
int i = 0; i < 30; ++i)
375 for (
int i = 0; i < 50; ++i)
382 for (
int i = 0; i < 50; ++i)
390 for (
int i = 0; i < 20; ++i)
395 for (
int i = 100; i < 120; ++i)
399 for (
int i = 100; i < 120; ++i)
409 const size_t n = 500;
412 for (
size_t i = 0; i < n; ++i)
413 cf.insert(
static_cast<int>(i));
417 for (
size_t i = n + 10000; i < n + 10000 +
test_count; ++i)
418 if (
cf.contains(
static_cast<int>(i)))
426 <<
"Empirical FP rate " <<
empirical <<
" too high";
433 for (
int i = 0; i < 200; ++i)
437 for (
int i = 10000; i < 20000; ++i)
452 std::mt19937
rng(42);
453 std::uniform_int_distribution<int> dist(0, 1000000);
455 std::set<int> inserted;
458 for (
int i = 0; i < 2000; ++i)
462 inserted.insert(val);
466 for (
int val : inserted)
479 for (
int i = 0; i < 200; ++i)
483 for (
int i = 0; i < 100; ++i)
487 for (
int i = 100; i < 200; ++i)
498 for (
int i = 0; i < 10; ++i)
536 for (
int i = 0; i < 50; ++i)
539 for (
int i = 0; i < 50; ++i)
556 for (
int i = 0; i < 50; ++i)
559 for (
int i = 0; i < 50; ++i)
572 std::vector<int> values = {1, 5, 10, 42, 99, 123, 456, 789};
574 for (
int val : values)
581 for (
int val : values)
599 size_t num_buckets =
compact.capacity() / 4;
616 for (
int i = 0; i < 1000; ++i)
627 for (
int i = 0; i < 1000; ++i)
Memory-optimized Cuckoo Filter with bit-packed fingerprints.
Industrial-grade Cuckoo Filter implementation.
bool contains(const T &item) const
Test membership.
size_t size() const noexcept
Return the number of items currently in the filter.
bool insert(const T &item)
Insert an item into the filter.
Memory-optimized Cuckoo filter with bit-packed fingerprints.
Probabilistic set membership with Cuckoo filters.
Main namespace for Aleph-w library functions.
Itor2 copy(Itor1 sourceBeg, const Itor1 &sourceEnd, Itor2 destBeg)
Copy elements from one range to another.
Divide_Conquer_DP_Result< Cost > divide_and_conquer_partition_dp(const size_t groups, const size_t n, Transition_Cost_Fn transition_cost, const Cost inf=dp_optimization_detail::default_inf< Cost >())
Optimize partition DP using divide-and-conquer optimization.