Prefer getChild to getChildGeq in happy path
Saves instructions according to cachegrind
This commit is contained in:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user