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;
|
goto downLeftSpine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto *child = getChild(n, remaining[0]);
|
||||||
|
if (child == nullptr) {
|
||||||
int c = getChildGeq(n, remaining[0]);
|
int c = getChildGeq(n, remaining[0]);
|
||||||
if (c != remaining[0]) {
|
|
||||||
if (c >= 0) {
|
if (c >= 0) {
|
||||||
n = getChildExists(n, c);
|
n = getChildExists(n, c);
|
||||||
goto downLeftSpine;
|
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);
|
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||||
|
|
||||||
if (n->partialKeyLen > 0) {
|
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;
|
return maxBetweenExclusive(n, begin, end) <= readVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto *child = getChild(n, remaining[0]);
|
||||||
|
if (child == nullptr) {
|
||||||
int c = getChildGeq(n, remaining[0]);
|
int c = getChildGeq(n, remaining[0]);
|
||||||
if (c != remaining[0]) {
|
|
||||||
if (c >= 0) {
|
if (c >= 0) {
|
||||||
n = getChildExists(n, c);
|
n = getChildExists(n, c);
|
||||||
goto downLeftSpine;
|
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);
|
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||||
|
|
||||||
if (n->partialKeyLen > 0) {
|
if (n->partialKeyLen > 0) {
|
||||||
@@ -1066,8 +1068,9 @@ struct CheckRangeLeftSide {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto *child = getChild(n, remaining[0]);
|
||||||
|
if (child == nullptr) {
|
||||||
int c = getChildGeq(n, remaining[0]);
|
int c = getChildGeq(n, remaining[0]);
|
||||||
if (c != remaining[0]) {
|
|
||||||
if (c >= 0) {
|
if (c >= 0) {
|
||||||
if (searchPathLen < prefixLen) {
|
if (searchPathLen < prefixLen) {
|
||||||
n = getChildExists(n, c);
|
n = getChildExists(n, c);
|
||||||
@@ -1082,7 +1085,7 @@ struct CheckRangeLeftSide {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
n = getChildExists(n, c);
|
n = child;
|
||||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||||
++searchPathLen;
|
++searchPathLen;
|
||||||
|
|
||||||
@@ -1208,8 +1211,9 @@ struct CheckRangeRightSide {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto *child = getChild(n, remaining[0]);
|
||||||
|
if (child == nullptr) {
|
||||||
int c = getChildGeq(n, remaining[0]);
|
int c = getChildGeq(n, remaining[0]);
|
||||||
if (c != remaining[0]) {
|
|
||||||
if (c >= 0) {
|
if (c >= 0) {
|
||||||
n = getChildExists(n, c);
|
n = getChildExists(n, c);
|
||||||
return downLeftSpine();
|
return downLeftSpine();
|
||||||
@@ -1218,7 +1222,7 @@ struct CheckRangeRightSide {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
n = getChildExists(n, c);
|
n = child;
|
||||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||||
++searchPathLen;
|
++searchPathLen;
|
||||||
|
|
||||||
@@ -1585,8 +1589,9 @@ struct FirstGeqStepwise {
|
|||||||
return downLeftSpine();
|
return downLeftSpine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto *child = getChild(n, remaining[0]);
|
||||||
|
if (child == nullptr) {
|
||||||
int c = getChildGeq(n, remaining[0]);
|
int c = getChildGeq(n, remaining[0]);
|
||||||
if (c != remaining[0]) {
|
|
||||||
if (c >= 0) {
|
if (c >= 0) {
|
||||||
n = getChildExists(n, c);
|
n = getChildExists(n, c);
|
||||||
return downLeftSpine();
|
return downLeftSpine();
|
||||||
@@ -1596,7 +1601,7 @@ struct FirstGeqStepwise {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
n = getChildExists(n, c);
|
n = child;
|
||||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||||
|
|
||||||
if (n->partialKeyLen > 0) {
|
if (n->partialKeyLen > 0) {
|
||||||
|
Reference in New Issue
Block a user