diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-07-07 16:45:33 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-07-07 18:16:20 +0300 |
commit | ba328312609d62c3d32f9d01e89dc4a8463b6dc4 (patch) | |
tree | 159e50fa7fbbfa3c51298de5100d243352397d77 /benchmark | |
parent | 35b90618b77391eb9cddcfa6286e679c63b14a09 (diff) | |
download | qtlocation-mapboxgl-ba328312609d62c3d32f9d01e89dc4a8463b6dc4.tar.gz |
[benchmark] add render benchmarks
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/api/query.benchmark.cpp | 2 | ||||
-rw-r--r-- | benchmark/api/render.benchmark.cpp | 79 | ||||
-rw-r--r-- | benchmark/fixtures/api/style.json (renamed from benchmark/fixtures/api/query_style.json) | 0 |
3 files changed, 80 insertions, 1 deletions
diff --git a/benchmark/api/query.benchmark.cpp b/benchmark/api/query.benchmark.cpp index 05732e0e9a..763349c07a 100644 --- a/benchmark/api/query.benchmark.cpp +++ b/benchmark/api/query.benchmark.cpp @@ -24,7 +24,7 @@ public: NetworkStatus::Set(NetworkStatus::Status::Offline); fileSource.setAccessToken("foobar"); - map.getStyle().loadJSON(util::read_file("benchmark/fixtures/api/query_style.json")); + map.getStyle().loadJSON(util::read_file("benchmark/fixtures/api/style.json")); map.setLatLngZoom({ 40.726989, -73.992857 }, 15); // Manhattan map.getStyle().addImage(std::make_unique<style::Image>("test-icon", decodeImage(util::read_file("benchmark/fixtures/api/default_marker.png")), 1.0)); diff --git a/benchmark/api/render.benchmark.cpp b/benchmark/api/render.benchmark.cpp new file mode 100644 index 0000000000..8c71c1a9bf --- /dev/null +++ b/benchmark/api/render.benchmark.cpp @@ -0,0 +1,79 @@ +#include <benchmark/benchmark.h> + +#include <mbgl/benchmark/util.hpp> +#include <mbgl/map/map.hpp> +#include <mbgl/map/backend_scope.hpp> +#include <mbgl/gl/headless_backend.hpp> +#include <mbgl/gl/offscreen_view.hpp> +#include <mbgl/util/default_thread_pool.hpp> +#include <mbgl/style/style.hpp> +#include <mbgl/style/image.hpp> +#include <mbgl/storage/default_file_source.hpp> +#include <mbgl/storage/network_status.hpp> +#include <mbgl/util/image.hpp> +#include <mbgl/util/io.hpp> +#include <mbgl/util/run_loop.hpp> + +using namespace mbgl; + +namespace { + +class RenderBenchmark { +public: + RenderBenchmark() { + NetworkStatus::Set(NetworkStatus::Status::Offline); + fileSource.setAccessToken("foobar"); + } + + util::RunLoop loop; + HeadlessBackend backend; + BackendScope scope { backend }; + OffscreenView view { backend.getContext(), { 1000, 1000 } }; + DefaultFileSource fileSource { "benchmark/fixtures/api/cache.db", "." }; + ThreadPool threadPool { 4 }; +}; + +static void prepare(Map& map, optional<std::string> json = {}) { + map.getStyle().loadJSON(json ? *json : util::read_file("benchmark/fixtures/api/style.json")); + map.setLatLngZoom({ 40.726989, -73.992857 }, 15); // Manhattan + map.getStyle().addImage(std::make_unique<style::Image>("test-icon", + decodeImage(util::read_file("benchmark/fixtures/api/default_marker.png")), 1.0)); +} + +} // end namespace + +static void API_renderStill_reuse_map(::benchmark::State& state) { + RenderBenchmark bench; + Map map { bench.backend, bench.view.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Still }; + prepare(map); + + while (state.KeepRunning()) { + mbgl::benchmark::render(map, bench.view); + } +} + +static void API_renderStill_reuse_map_switch_styles(::benchmark::State& state) { + RenderBenchmark bench; + Map map { bench.backend, bench.view.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Still }; + + while (state.KeepRunning()) { + prepare(map, { "{}" }); + mbgl::benchmark::render(map, bench.view); + prepare(map); + mbgl::benchmark::render(map, bench.view); + } +} + +static void API_renderStill_recreate_map(::benchmark::State& state) { + RenderBenchmark bench; + + while (state.KeepRunning()) { + Map map { bench.backend, bench.view.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Still }; + prepare(map); + mbgl::benchmark::render(map, bench.view); + } +} + +BENCHMARK(API_renderStill_reuse_map); +BENCHMARK(API_renderStill_reuse_map_switch_styles); +BENCHMARK(API_renderStill_recreate_map); diff --git a/benchmark/fixtures/api/query_style.json b/benchmark/fixtures/api/style.json index cf88aeb6ed..cf88aeb6ed 100644 --- a/benchmark/fixtures/api/query_style.json +++ b/benchmark/fixtures/api/style.json |