Add RapidjsonCopyAndMutate to compare w/ shallow copy

Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
This commit is contained in:
Nicholas Van Sickle
2021-12-12 12:58:52 -08:00
parent c53c97cf5f
commit cc120c772c
2 changed files with 21 additions and 3 deletions
@@ -276,13 +276,31 @@ namespace Benchmark
for (auto _ : state)
{
rapidjson::Document copy;
original.Accept(copy);
copy.CopyFrom(original, copy.GetAllocator(), true);
benchmark::DoNotOptimize(copy);
}
state.SetItemsProcessed(state.iterations());
}
BENCHMARK_REGISTER_JSON(DomJsonBenchmark, RapidjsonDeepCopy)
BENCHMARK_DEFINE_F(DomJsonBenchmark, RapidjsonCopyAndMutate)(benchmark::State& state)
{
rapidjson::Document original = GenerateDomJsonBenchmarkDocument(state.range(0), state.range(1));
for (auto _ : state)
{
rapidjson::Document copy;
copy.CopyFrom(original, copy.GetAllocator(), true);
copy["entries"]["Key0"].PushBack(42, copy.GetAllocator());
benchmark::DoNotOptimize(copy);
}
state.SetItemsProcessed(state.iterations());
}
BENCHMARK_REGISTER_JSON(DomJsonBenchmark, RapidjsonCopyAndMutate)
#undef BENCHMARK_REGISTER_JSON
} // namespace Benchmark
@@ -135,7 +135,7 @@ namespace AZ::Dom::Benchmark
->Args({ 100, 500 })
->Unit(benchmark::kNanosecond);
BENCHMARK_DEFINE_F(DomValueBenchmark, AzDomValueShallowCopyAndMutate)(benchmark::State& state)
BENCHMARK_DEFINE_F(DomValueBenchmark, AzDomValueCopyAndMutate)(benchmark::State& state)
{
Value original = GenerateDomBenchmarkPayload(state.range(0), state.range(1));
@@ -148,7 +148,7 @@ namespace AZ::Dom::Benchmark
state.SetItemsProcessed(state.iterations());
}
BENCHMARK_REGISTER_F(DomValueBenchmark, AzDomValueShallowCopyAndMutate)
BENCHMARK_REGISTER_F(DomValueBenchmark, AzDomValueCopyAndMutate)
->Args({ 10, 5 })
->Args({ 10, 500 })
->Args({ 100, 5 })