Add an analysis on memory usage in static asserts
All checks were successful
Tests / Release [gcc] total: 827, passed: 827
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 826, passed: 826
Tests / Coverage total: 825, passed: 825
weaselab/conflict-set/pipeline/head This commit looks good
All checks were successful
Tests / Release [gcc] total: 827, passed: 827
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 826, passed: 826
Tests / Coverage total: 825, passed: 825
weaselab/conflict-set/pipeline/head This commit looks good
CC #9
This commit is contained in:
@@ -247,6 +247,19 @@ struct Node256 : Node {
|
||||
uint8_t *partialKey() { return (uint8_t *)(this + 1); }
|
||||
};
|
||||
|
||||
// Bound memory usage following the analysis in the ART paper
|
||||
|
||||
constexpr int kBytesPerKey = 86;
|
||||
constexpr int kMinChildrenNode4 = 2;
|
||||
constexpr int kMinChildrenNode16 = 5;
|
||||
constexpr int kMinChildrenNode48 = 17;
|
||||
constexpr int kMinChildrenNode256 = 49;
|
||||
|
||||
static_assert(sizeof(Node256) < kMinChildrenNode256 * kBytesPerKey);
|
||||
static_assert(sizeof(Node48) < kMinChildrenNode48 * kBytesPerKey);
|
||||
static_assert(sizeof(Node16) < kMinChildrenNode16 * kBytesPerKey);
|
||||
static_assert(sizeof(Node4) < kMinChildrenNode4 * kBytesPerKey);
|
||||
|
||||
// Bounds memory usage in free list, but does not account for memory for partial
|
||||
// keys.
|
||||
template <class T, size_t kMemoryBound = (1 << 20)>
|
||||
|
Reference in New Issue
Block a user