commit - 4f85d27efdf443cccf18ba29a3221f524904cce2
commit + 3a3890ed9389c83a0fcf7e061b23ae947da9d4a2
blob - a346514deeb4337ff7bac134f371359000a9f7a0
blob + afa7346b4575bea7b9910dc026b5086ac207ac1c
--- perf/memtx.cc
+++ perf/memtx.cc
state.PauseTiming();
::port_destroy(&port);
state.ResumeTiming();
+ }
+ state.SetItemsProcessed(counter);
+}
+
+/**
+ * Benchmark random `replace`s of existing keys in the tree index.
+ * The key subset is regenerated through every iteration.
+ */
+BENCHMARK_F(MemtxFixture, TreeReplaceRandomExistingKeys)
+(benchmark::State & state)
+{
+ auto itr = key_subset.begin();
+ int64_t counter = 0;
+ for (MAYBE_UNUSED auto _ : state) {
+ if (itr == key_subset.end()) {
+ state.PauseTiming();
+ generate_key_subset();
+ state.ResumeTiming();
+ itr = key_subset.begin();
+ }
+ struct tuple *result;
+ if (::box_replace(sid, itr->first, itr->second, &result) != 0)
+ panic("failed to replace the tuple");
+ benchmark::DoNotOptimize(result);
+ ++counter;
+ ++itr;
}
state.SetItemsProcessed(counter);
}