diff options
-rw-r--r-- | test/Jamfile.jam | 4 | ||||
-rw-r--r-- | test/perf-persistence.cpp | 23 |
2 files changed, 27 insertions, 0 deletions
diff --git a/test/Jamfile.jam b/test/Jamfile.jam index e5781e1..e178573 100644 --- a/test/Jamfile.jam +++ b/test/Jamfile.jam @@ -55,6 +55,10 @@ run test-render.cpp : : : <library>test ; run test-glContextBhvr.cpp ; run test-assetFactory.cpp : -- : ../res/brush47.xml : <library>test ; run perf-assetFactory.cpp : : : <library>benchmark <library>test ; +run perf-persistence.cpp : : : <library>benchmark <library>test ; compile test-static-enumDetails.cpp ; compile test-static-stream_support.cpp ; explicit perf-assetFactory ; +explicit perf-persistence ; +alias perf : perf-assetFactory perf-persistence ; +explicit perf ; 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(); |