Fix write metrics for interleaved implementation
This commit is contained in:
@@ -4099,6 +4099,7 @@ struct Context {
|
||||
Node *root;
|
||||
InternalVersionT writeVersion;
|
||||
Result *results;
|
||||
int64_t iterations = 0;
|
||||
};
|
||||
|
||||
PRESERVE_NONE void keepGoing(Job *job, Context *context) {
|
||||
@@ -4142,6 +4143,7 @@ template <class NodeT> void iter(Job *job, Context *context) {
|
||||
context->results[job->index] = {job->n, job->remaining};
|
||||
MUSTTAIL return complete(job, context);
|
||||
}
|
||||
++context->iterations;
|
||||
job->continuation = iterTable[child->getType()];
|
||||
__builtin_prefetch(job->n);
|
||||
MUSTTAIL return keepGoing(job, context);
|
||||
@@ -4731,6 +4733,8 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
||||
// are done
|
||||
inProgress->continuation(inProgress, &context);
|
||||
|
||||
writeContext.accum.insert_iterations += context.iterations;
|
||||
|
||||
// Phase 2: Perform insertions. Nodes may be upsized during this phase, but
|
||||
// old nodes get forwarding pointers installed and are released after
|
||||
// phase 2.
|
||||
@@ -4791,6 +4795,11 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < count; ++i) {
|
||||
const auto &w = writes[i];
|
||||
writeContext.accum.write_bytes += w.begin.len + w.end.len;
|
||||
}
|
||||
|
||||
#if __has_attribute(preserve_none) && __has_attribute(musttail)
|
||||
bool allPointWrites = true;
|
||||
for (int i = 0; i < count; ++i) {
|
||||
@@ -4807,7 +4816,6 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
||||
} else {
|
||||
for (int i = 0; i < count; ++i) {
|
||||
const auto &w = writes[i];
|
||||
writeContext.accum.write_bytes += w.begin.len + w.end.len;
|
||||
auto begin = std::span<const uint8_t>(w.begin.p, w.begin.len);
|
||||
auto end = std::span<const uint8_t>(w.end.p, w.end.len);
|
||||
if (w.end.len > 0) {
|
||||
|
Reference in New Issue
Block a user