summaryrefslogtreecommitdiff
path: root/test/perf-persistence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/perf-persistence.cpp')
-rw-r--r--test/perf-persistence.cpp23
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();