Assume writeVersion highest-ever to avoid max calculation
This is measurably faster
This commit is contained in:
@@ -1567,7 +1567,8 @@ template <bool kBegin>
|
|||||||
|
|
||||||
if constexpr (kBegin) {
|
if constexpr (kBegin) {
|
||||||
auto &m = maxVersion(*self, impl);
|
auto &m = maxVersion(*self, impl);
|
||||||
m = std::max(m, writeVersion);
|
assert(writeVersion >= m);
|
||||||
|
m = writeVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key.size() == 0) {
|
if (key.size() == 0) {
|
||||||
@@ -1576,7 +1577,8 @@ template <bool kBegin>
|
|||||||
|
|
||||||
if constexpr (!kBegin) {
|
if constexpr (!kBegin) {
|
||||||
auto &m = maxVersion(*self, impl);
|
auto &m = maxVersion(*self, impl);
|
||||||
m = std::max(m, writeVersion);
|
assert(writeVersion >= m);
|
||||||
|
m = writeVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto &child = getOrCreateChild(*self, key.front(), allocators);
|
auto &child = getOrCreateChild(*self, key.front(), allocators);
|
||||||
@@ -1623,7 +1625,8 @@ void addPointWrite(Node *&root, int64_t oldestVersion,
|
|||||||
n->entry.rangeVersion =
|
n->entry.rangeVersion =
|
||||||
p != nullptr ? p->entry.rangeVersion : oldestVersion;
|
p != nullptr ? p->entry.rangeVersion : oldestVersion;
|
||||||
} else {
|
} 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);
|
auto &m = maxVersion(n, impl);
|
||||||
m = std::max(m, writeVersion);
|
assert(writeVersion >= m);
|
||||||
|
m = writeVersion;
|
||||||
|
|
||||||
remaining = remaining.subspan(n->partialKeyLen + 1,
|
remaining = remaining.subspan(n->partialKeyLen + 1,
|
||||||
remaining.size() - (n->partialKeyLen + 1));
|
remaining.size() - (n->partialKeyLen + 1));
|
||||||
@@ -1688,9 +1692,10 @@ void addWriteRange(Node *&root, int64_t oldestVersion,
|
|||||||
maxVersion(beginNode, impl) = writeVersion;
|
maxVersion(beginNode, impl) = writeVersion;
|
||||||
}
|
}
|
||||||
auto &m = maxVersion(beginNode, impl);
|
auto &m = maxVersion(beginNode, impl);
|
||||||
m = std::max(m, writeVersion);
|
assert(writeVersion >= m);
|
||||||
beginNode->entry.pointVersion =
|
m = writeVersion;
|
||||||
std::max(beginNode->entry.pointVersion, writeVersion);
|
assert(writeVersion >= beginNode->entry.pointVersion);
|
||||||
|
beginNode->entry.pointVersion = writeVersion;
|
||||||
|
|
||||||
auto *endNode = insert<false>(useAsRoot, end, writeVersion, allocators, impl);
|
auto *endNode = insert<false>(useAsRoot, end, writeVersion, allocators, impl);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user