From 412b8c862f288624bcb8c4952f51178416556c8c Mon Sep 17 00:00:00 2001 From: jbajic <jure.bajic@memgraph.com> Date: Wed, 25 Jan 2023 13:24:41 +0100 Subject: [PATCH] Add benchmark with gc --- tests/benchmark/storage_v3_split.cpp | 35 +++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/tests/benchmark/storage_v3_split.cpp b/tests/benchmark/storage_v3_split.cpp index 9b4ed5c0e..4204bbb2c 100644 --- a/tests/benchmark/storage_v3_split.cpp +++ b/tests/benchmark/storage_v3_split.cpp @@ -90,9 +90,42 @@ BENCHMARK_DEFINE_F(ShardSplitBenchmark, BigDataSplit)(::benchmark::State &state) } } +BENCHMARK_DEFINE_F(ShardSplitBenchmark, BigDataSplitWithGc)(::benchmark::State &state) { + std::random_device r; + std::default_random_engine e1(r()); + std::uniform_int_distribution<int> uniform_dist(0, state.range(0)); + + for (int64_t i{0}; i < state.range(0); ++i) { + auto acc = storage->Access(GetNextHlc()); + MG_ASSERT(acc.CreateVertexAndValidate({secondary_label}, PrimaryKey{PropertyValue(i)}, + {{secondary_property, PropertyValue(i)}}) + .HasValue(), + "Failed creating with pk {}", i); + if (i > 1) { + const auto vtx1 = uniform_dist(e1) % i; + const auto vtx2 = uniform_dist(e1) % i; + + MG_ASSERT(acc.CreateEdge(VertexId{primary_label, {PropertyValue(vtx1)}}, + VertexId{primary_label, {PropertyValue(vtx2)}}, edge_type_id, Gid::FromUint(i)) + .HasValue(), + "Failed on {} and {}", vtx1, vtx2); + } + acc.Commit(GetNextHlc()); + } + storage->CollectGarbage(GetNextHlc().coordinator_wall_clock); + for (auto _ : state) { + auto data = storage->PerformSplit(PrimaryKey{PropertyValue{state.range(0) / 2}}); + } +} + BENCHMARK_REGISTER_F(ShardSplitBenchmark, BigDataSplit) ->RangeMultiplier(10) - ->Range(100'000, 100'000'000) + ->Range(100'000, 1'000'000) + ->Unit(::benchmark::kMillisecond); + +BENCHMARK_REGISTER_F(ShardSplitBenchmark, BigDataSplitWithGc) + ->RangeMultiplier(10) + ->Range(100'000, 1'000'000) ->Unit(::benchmark::kMillisecond); } // namespace memgraph::benchmark