| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <Tests/DOM/DomFixtures.h>
- #include <AzCore/DOM/DomPath.h>
- namespace AZ::Dom::Benchmark
- {
- using DomPathBenchmark = Tests::DomBenchmarkFixture;
- BENCHMARK_DEFINE_F(DomPathBenchmark, DomPath_Concatenate_InPlace)(benchmark::State& state)
- {
- AZ::Name entry1("entry1");
- AZ::Name entry2("entry2");
- PathEntry end;
- end.SetEndOfArray();
- for ([[maybe_unused]] auto _ : state)
- {
- Path p;
- p /= entry1;
- p /= entry2;
- p /= 0;
- p /= end;
- }
- state.SetItemsProcessed(4 * state.iterations());
- }
- BENCHMARK_REGISTER_F(DomPathBenchmark, DomPath_Concatenate_InPlace);
- BENCHMARK_DEFINE_F(DomPathBenchmark, DomPath_Concatenate_Copy)(benchmark::State& state)
- {
- AZ::Name entry1("entry1");
- AZ::Name entry2("entry2");
- PathEntry end;
- end.SetEndOfArray();
- for ([[maybe_unused]] auto _ : state)
- {
- Path p = Path() / entry1 / entry2 / 0 / end;
- }
- state.SetItemsProcessed(4 * state.iterations());
- }
- BENCHMARK_REGISTER_F(DomPathBenchmark, DomPath_Concatenate_Copy);
- BENCHMARK_DEFINE_F(DomPathBenchmark, DomPath_ToString)(benchmark::State& state)
- {
- Path p("/path/with/multiple/0/different/components/65536/999/-");
- AZStd::string s;
- s.resize_no_construct(p.GetStringLength());
- for ([[maybe_unused]] auto _ : state)
- {
- p.GetStringLength();
- p.FormatString(s.data(), s.size());
- }
- state.SetBytesProcessed(s.size() * state.iterations());
- }
- BENCHMARK_REGISTER_F(DomPathBenchmark, DomPath_ToString);
- BENCHMARK_DEFINE_F(DomPathBenchmark, DomPath_FromString)(benchmark::State& state)
- {
- AZStd::string pathString = "/path/with/multiple/0/different/components/including-long-strings-like-this/65536/999/-";
- for ([[maybe_unused]] auto _ : state)
- {
- Path p(pathString);
- benchmark::DoNotOptimize(p);
- }
- state.SetBytesProcessed(pathString.size() * state.iterations());
- }
- BENCHMARK_REGISTER_F(DomPathBenchmark, DomPath_FromString);
- BENCHMARK_DEFINE_F(DomPathBenchmark, DomPathEntry_IsEndOfArray)(benchmark::State& state)
- {
- PathEntry name("name");
- PathEntry index(0);
- PathEntry endOfArray;
- endOfArray.SetEndOfArray();
- for ([[maybe_unused]] auto _ : state)
- {
- name.IsEndOfArray();
- index.IsEndOfArray();
- endOfArray.IsEndOfArray();
- }
- state.SetItemsProcessed(3 * state.iterations());
- }
- BENCHMARK_REGISTER_F(DomPathBenchmark, DomPathEntry_IsEndOfArray);
- BENCHMARK_DEFINE_F(DomPathBenchmark, DomPathEntry_Comparison)(benchmark::State& state)
- {
- PathEntry name("name");
- PathEntry index(0);
- PathEntry endOfArray;
- endOfArray.SetEndOfArray();
- for ([[maybe_unused]] auto _ : state)
- {
- benchmark::DoNotOptimize(name == name);
- benchmark::DoNotOptimize(name == index);
- benchmark::DoNotOptimize(name == endOfArray);
- benchmark::DoNotOptimize(index == index);
- benchmark::DoNotOptimize(index == endOfArray);
- benchmark::DoNotOptimize(endOfArray == endOfArray);
- }
- state.SetItemsProcessed(6 * state.iterations());
- }
- BENCHMARK_REGISTER_F(DomPathBenchmark, DomPathEntry_Comparison);
- }
|