Skip to content

Commit af2ff2a

Browse files
committed
Morton filter: load factor of 0.95, with GCC
1 parent 3515232 commit af2ff2a

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

benchmarks/bulk-insert-and-query.cc

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,8 @@ class MortonFilter {
318318
size_t size;
319319
public:
320320
MortonFilter(const size_t size) {
321-
// filter = new Morton3_8((size_t) (size / 0.50) + 64);
322-
filter = new Morton3_8((size_t) (2.1 * size) + 64);
321+
filter = new Morton3_8((size_t) (size / 0.95) + 64);
322+
// filter = new Morton3_8((size_t) (2.1 * size) + 64);
323323
this->size = size;
324324
}
325325
~MortonFilter() {
@@ -328,7 +328,17 @@ class MortonFilter {
328328
void Add(uint64_t key) {
329329
filter->insert(key);
330330
}
331-
bool Contain(uint64_t &item) {
331+
void AddAll(const vector<uint64_t> keys, const size_t start, const size_t end) {
332+
size_t size = end - start;
333+
::std::vector<uint64_t> k(size);
334+
::std::vector<bool> status(size);
335+
for (size_t i = start; i < end; i++) {
336+
k[i - start] = keys[i];
337+
}
338+
// TODO return value and status is ignored currently
339+
filter->insert_many(k, status, size);
340+
}
341+
inline bool Contain(uint64_t &item) {
332342
return filter->likely_contains(item);
333343
};
334344
size_t SizeInBytes() const {
@@ -353,9 +363,7 @@ struct FilterAPI<MortonFilter> {
353363
table->Add(key);
354364
}
355365
static void AddAll(const vector<uint64_t> keys, const size_t start, const size_t end, Table* table) {
356-
for (size_t i = start; i < end; i++) {
357-
table->Add(keys[i]);
358-
}
366+
table->AddAll(keys, start, end);
359367
}
360368
static void Remove(uint64_t key, Table * table) {
361369
throw std::runtime_error("Unsupported");

0 commit comments

Comments
 (0)