From b779c0f6f75e7519d59f3268671e292992c6873e Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Wed, 13 Mar 2024 07:26:49 -0700 Subject: [PATCH] Fix induction (again). Now it's 176 bytes per key --- ConflictSet.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 3639493..a0ccd9b 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -265,20 +265,22 @@ std::string getSearchPathPrintable(Node *n); // Bound memory usage following the analysis in the ART paper -constexpr int kBytesPerKey = 120; +constexpr int kBytesPerKey = 176; +constexpr int kMinSavingsPerNode = 120; constexpr int kMinChildrenNode4 = 2; constexpr int kMinChildrenNode16 = 5; constexpr int kMinChildrenNode48 = 17; constexpr int kMinChildrenNode256 = 49; -static_assert(sizeof(Node256) + kBytesPerKey <= - kMinChildrenNode256 * kBytesPerKey); -static_assert(sizeof(Node48) + kBytesPerKey <= - kMinChildrenNode48 * kBytesPerKey); -static_assert(sizeof(Node16) + kBytesPerKey <= - kMinChildrenNode16 * kBytesPerKey); -static_assert(sizeof(Node4) + kBytesPerKey <= kMinChildrenNode4 * kBytesPerKey); -static_assert(sizeof(Node0) <= kBytesPerKey); +static_assert(sizeof(Node256) + kMinSavingsPerNode <= + kMinChildrenNode256 * kMinSavingsPerNode); +static_assert(sizeof(Node48) + kMinSavingsPerNode <= + kMinChildrenNode48 * kMinSavingsPerNode); +static_assert(sizeof(Node16) + kMinSavingsPerNode <= + kMinChildrenNode16 * kMinSavingsPerNode); +static_assert(sizeof(Node4) + kMinSavingsPerNode <= + kMinChildrenNode4 * kMinSavingsPerNode); +static_assert(sizeof(Node0) + kMinSavingsPerNode <= kBytesPerKey); // setOldestVersion will additionally try to maintain this property: // `max(children, 1) * length >= capacity`