diff --git a/Bench.cpp b/Bench.cpp index 11d3b61..8a502b0 100644 --- a/Bench.cpp +++ b/Bench.cpp @@ -789,10 +789,8 @@ template void benchConflictSet(const std::string &name) { while (version < kMvccWindow) { auto v = ++version; - for (auto &w : writes) { - w.writeVersion = v; - } - cs.addWrites(writes.data(), writes.size()); + writes[0].writeVersion = v; + cs.addWrites(writes.data(), 1); } bench.run(name + " (point writes)", [&]() { @@ -852,6 +850,28 @@ template void benchConflictSet(const std::string &name) { cs.setOldestVersion(version - kMvccWindow); }); } + + bench.batch(1); + + { + bench.run(name + " (monotonic increasing point writes)", [&]() { + auto v = ++version; + ConflictSet::WriteRange w; + + uint8_t b[9]; + b[8] = 0; + auto x = __builtin_bswap64(version); + memcpy(b, &x, 8); + + w.writeVersion = v; + w.begin.p = b; + w.begin.len = 8; + w.end.len = 0; + w.end.p = b; + cs.addWrites(&w, 1); + cs.setOldestVersion(version - kMvccWindow); + }); + } } int main(void) {