Assume writeVersion highest-ever to avoid max calculation

This is measurably faster
This commit is contained in:
2024-03-05 16:06:50 -08:00
parent 9a4eed9453
commit ec3aec4dff

View File

@@ -1567,7 +1567,8 @@ template <bool kBegin>
if constexpr (kBegin) {
auto &m = maxVersion(*self, impl);
m = std::max(m, writeVersion);
assert(writeVersion >= m);
m = writeVersion;
}
if (key.size() == 0) {
@@ -1576,7 +1577,8 @@ template <bool kBegin>
if constexpr (!kBegin) {
auto &m = maxVersion(*self, impl);
m = std::max(m, writeVersion);
assert(writeVersion >= m);
m = writeVersion;
}
auto &child = getOrCreateChild(*self, key.front(), allocators);
@@ -1623,7 +1625,8 @@ void addPointWrite(Node *&root, int64_t oldestVersion,
n->entry.rangeVersion =
p != nullptr ? p->entry.rangeVersion : oldestVersion;
} else {
n->entry.pointVersion = std::max(n->entry.pointVersion, writeVersion);
assert(writeVersion >= n->entry.pointVersion);
n->entry.pointVersion = writeVersion;
}
}
@@ -1659,7 +1662,8 @@ void addWriteRange(Node *&root, int64_t oldestVersion,
}
auto &m = maxVersion(n, impl);
m = std::max(m, writeVersion);
assert(writeVersion >= m);
m = writeVersion;
remaining = remaining.subspan(n->partialKeyLen + 1,
remaining.size() - (n->partialKeyLen + 1));
@@ -1688,9 +1692,10 @@ void addWriteRange(Node *&root, int64_t oldestVersion,
maxVersion(beginNode, impl) = writeVersion;
}
auto &m = maxVersion(beginNode, impl);
m = std::max(m, writeVersion);
beginNode->entry.pointVersion =
std::max(beginNode->entry.pointVersion, writeVersion);
assert(writeVersion >= m);
m = writeVersion;
assert(writeVersion >= beginNode->entry.pointVersion);
beginNode->entry.pointVersion = writeVersion;
auto *endNode = insert<false>(useAsRoot, end, writeVersion, allocators, impl);