Add short-circuiting back for range common prefix search
This commit is contained in:
@@ -3318,7 +3318,8 @@ PRESERVE_NONE void begin(CheckJob *job, CheckContext *context) {
|
||||
MUSTTAIL return done_common_prefix_iter(job, context);
|
||||
}
|
||||
|
||||
auto c = getChild(job->n, job->remaining[0]);
|
||||
auto [c, maxV] = getChildAndMaxVersion(job->n, job->remaining[0]);
|
||||
job->maxV = maxV;
|
||||
job->child = c;
|
||||
if (job->child == nullptr) {
|
||||
MUSTTAIL return done_common_prefix_iter(job, context);
|
||||
@@ -3351,11 +3352,18 @@ void common_prefix_iter(CheckJob *job, CheckContext *context) {
|
||||
|
||||
++context->tls->range_read_iterations_accum;
|
||||
|
||||
if (job->maxV <= job->readVersion) {
|
||||
job->setResult(true);
|
||||
++context->tls->range_read_short_circuit_accum;
|
||||
MUSTTAIL return complete(job, context);
|
||||
}
|
||||
|
||||
if (job->remaining.size() == 0) {
|
||||
MUSTTAIL return done_common_prefix_iter(job, context);
|
||||
}
|
||||
|
||||
auto c = getChild(child, job->remaining[0]);
|
||||
auto [c, maxV] = getChildAndMaxVersion(child, job->remaining[0]);
|
||||
job->maxV = maxV;
|
||||
job->child = c;
|
||||
if (job->child == nullptr) {
|
||||
MUSTTAIL return done_common_prefix_iter(job, context);
|
||||
|
Reference in New Issue
Block a user