Skip to content

Commit ca1bbf3

Browse files
committed
chore: Refactor SortedMap
1. intoduce variant of Redis and Dragonfly implementation and wrap each operation with a dedicated dispatcher operator. The dragonfly implementation path is a noop and not implemented. 2. Introduce a very basic sorted_map_test around Add and move the unrelated old test from sorted_map_test to bptree_set_test. Signed-off-by: Roman Gershman <[email protected]>
1 parent 4001a94 commit ca1bbf3

File tree

6 files changed

+482
-199
lines changed

6 files changed

+482
-199
lines changed

src/core/bptree_set_test.cc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//
44
#include "core/bptree_set.h"
55

6+
#include <absl/container/btree_set.h>
67
#include <mimalloc.h>
78

89
#include <random>
@@ -320,6 +321,38 @@ TEST_F(BPTreeSetTest, DeleteRange) {
320321
}
321322
}
322323

324+
TEST_F(BPTreeSetTest, MemoryUsage) {
325+
zskiplist* zsl = zslCreate();
326+
std::vector<sds> sds_vec;
327+
for (size_t i = 0; i < 10'000; ++i) {
328+
sds_vec.push_back(sdsnew("f"));
329+
}
330+
size_t sz_before = zmalloc_used_memory_tl;
331+
LOG(INFO) << "zskiplist before: " << sz_before << " bytes";
332+
333+
for (size_t i = 0; i < sds_vec.size(); ++i) {
334+
zslInsert(zsl, i, sds_vec[i]);
335+
}
336+
LOG(INFO) << "zskiplist took: " << zmalloc_used_memory_tl - sz_before << " bytes";
337+
zslFree(zsl);
338+
339+
sds_vec.clear();
340+
for (size_t i = 0; i < 10'000; ++i) {
341+
sds_vec.push_back(sdsnew("f"));
342+
}
343+
344+
MiMemoryResource mi_alloc(mi_heap_get_backing());
345+
using AllocType = PMR_NS::polymorphic_allocator<std::pair<double, sds>>;
346+
AllocType alloc(&mi_alloc);
347+
absl::btree_set<pair<double, sds>, std::greater<pair<double, sds>>, AllocType> btree(alloc);
348+
349+
LOG(INFO) << "btree before: " << mi_alloc.used() << " bytes";
350+
for (size_t i = 0; i < sds_vec.size(); ++i) {
351+
btree.emplace(i, sds_vec[i]);
352+
}
353+
LOG(INFO) << "btree after: " << mi_alloc.used() << " bytes";
354+
}
355+
323356
struct ZsetPolicy {
324357
struct KeyT {
325358
double d;

src/core/compact_object.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ class RobjWrapper {
4141
void SetString(std::string_view s, MemoryResource* mr);
4242
void Init(unsigned type, unsigned encoding, void* inner);
4343

44-
// Equivalent to zsetAdd
45-
int AddZsetMember(std::string_view member, double score, int in_flags, int* out_flags,
46-
double* newscore);
47-
4844
unsigned type() const {
4945
return type_;
5046
}

0 commit comments

Comments
 (0)