diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-03-05 03:31:44 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-03-05 03:31:44 +0000 |
commit | 3141762fc0a5a35b5541ee183b1b7fe0672c41ae (patch) | |
tree | 6ccd41f9ad5ed8ffacfc74d5f7ce0ef26db63b65 /test/perf-persistence.cpp | |
parent | Move persistence test objects to test library (diff) | |
download | ilt-3141762fc0a5a35b5541ee183b1b7fe0672c41ae.tar.bz2 ilt-3141762fc0a5a35b5541ee183b1b7fe0672c41ae.tar.xz ilt-3141762fc0a5a35b5541ee183b1b7fe0672c41ae.zip |
Add a generic persistence perf test
Diffstat (limited to 'test/perf-persistence.cpp')
-rw-r--r-- | test/perf-persistence.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/perf-persistence.cpp b/test/perf-persistence.cpp new file mode 100644 index 0000000..2e099bf --- /dev/null +++ b/test/perf-persistence.cpp @@ -0,0 +1,23 @@ +#include "lib/jsonParse-persistence.h" +#include "testMainWindow.h" +#include "testStructures.h" +#include <benchmark/benchmark.h> + +template<typename T> +static void +parse_load_object(benchmark::State & state, T &&, const char * path) +{ + for (auto _ : state) { + std::ifstream in {path}; + benchmark::DoNotOptimize(Persistence::JsonParsePersistence {}.loadState<T>(in)); + } +} + +BENCHMARK_CAPTURE(parse_load_object, load_object, std::unique_ptr<TestObject> {}, FIXTURESDIR "json/load_object.json"); +BENCHMARK_CAPTURE(parse_load_object, nested, std::unique_ptr<TestObject> {}, FIXTURESDIR "json/nested.json"); +BENCHMARK_CAPTURE(parse_load_object, shared_ptr_diff, std::unique_ptr<SharedTestObject> {}, + FIXTURESDIR "json/shared_ptr_diff.json"); +BENCHMARK_CAPTURE(parse_load_object, shared_ptr_same, std::unique_ptr<SharedTestObject> {}, + FIXTURESDIR "json/shared_ptr_same.json"); + +BENCHMARK_MAIN(); |