Prefer getChild to getChildGeq in happy path

Saves instructions according to cachegrind
This commit is contained in:
2024-02-23 12:12:01 -08:00
parent 259f47664a
commit aaf0283f66

View File

@@ -811,8 +811,9 @@ bool checkPointRead(Node *n, const std::span<const uint8_t> key,
goto downLeftSpine;
}
int c = getChildGeq(n, remaining[0]);
if (c != remaining[0]) {
auto *child = getChild(n, remaining[0]);
if (child == nullptr) {
int c = getChildGeq(n, remaining[0]);
if (c >= 0) {
n = getChildExists(n, c);
goto downLeftSpine;
@@ -822,7 +823,7 @@ bool checkPointRead(Node *n, const std::span<const uint8_t> key,
}
}
n = getChildExists(n, c);
n = child;
remaining = remaining.subspan(1, remaining.size() - 1);
if (n->partialKeyLen > 0) {
@@ -968,8 +969,9 @@ bool checkRangeStartsWith(Node *n, std::span<const uint8_t> key, int begin,
return maxBetweenExclusive(n, begin, end) <= readVersion;
}
int c = getChildGeq(n, remaining[0]);
if (c != remaining[0]) {
auto *child = getChild(n, remaining[0]);
if (child == nullptr) {
int c = getChildGeq(n, remaining[0]);
if (c >= 0) {
n = getChildExists(n, c);
goto downLeftSpine;
@@ -979,7 +981,7 @@ bool checkRangeStartsWith(Node *n, std::span<const uint8_t> key, int begin,
}
}
n = getChildExists(n, c);
n = child;
remaining = remaining.subspan(1, remaining.size() - 1);
if (n->partialKeyLen > 0) {
@@ -1066,8 +1068,9 @@ struct CheckRangeLeftSide {
}
}
int c = getChildGeq(n, remaining[0]);
if (c != remaining[0]) {
auto *child = getChild(n, remaining[0]);
if (child == nullptr) {
int c = getChildGeq(n, remaining[0]);
if (c >= 0) {
if (searchPathLen < prefixLen) {
n = getChildExists(n, c);
@@ -1082,7 +1085,7 @@ struct CheckRangeLeftSide {
}
}
n = getChildExists(n, c);
n = child;
remaining = remaining.subspan(1, remaining.size() - 1);
++searchPathLen;
@@ -1208,8 +1211,9 @@ struct CheckRangeRightSide {
return true;
}
int c = getChildGeq(n, remaining[0]);
if (c != remaining[0]) {
auto *child = getChild(n, remaining[0]);
if (child == nullptr) {
int c = getChildGeq(n, remaining[0]);
if (c >= 0) {
n = getChildExists(n, c);
return downLeftSpine();
@@ -1218,7 +1222,7 @@ struct CheckRangeRightSide {
}
}
n = getChildExists(n, c);
n = child;
remaining = remaining.subspan(1, remaining.size() - 1);
++searchPathLen;
@@ -1585,8 +1589,9 @@ struct FirstGeqStepwise {
return downLeftSpine();
}
int c = getChildGeq(n, remaining[0]);
if (c != remaining[0]) {
auto *child = getChild(n, remaining[0]);
if (child == nullptr) {
int c = getChildGeq(n, remaining[0]);
if (c >= 0) {
n = getChildExists(n, c);
return downLeftSpine();
@@ -1596,7 +1601,7 @@ struct FirstGeqStepwise {
}
}
n = getChildExists(n, c);
n = child;
remaining = remaining.subspan(1, remaining.size() - 1);
if (n->partialKeyLen > 0) {