diff options
author | Langston Smith <langston.smith@mapbox.com> | 2018-01-04 11:15:50 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-04 11:15:50 -0800 |
commit | 2ea955d2751ba6459f99a0695e53505c0a11702b (patch) | |
tree | f54450918b634a2eea1bd2c4ebc671bf1bb06106 /benchmark/api/render.benchmark.cpp | |
parent | f2ec6ae326bad79fea2b06a21151a2835522572a (diff) | |
parent | c62b0af24fc76b4bb2eb34100611dd3ee9ee5536 (diff) | |
download | qtlocation-mapboxgl-upstream/ls-android-readme-tweaks.tar.gz |
Merge branch 'master' into ls-android-readme-tweaksupstream/ls-android-readme-tweaks
Diffstat (limited to 'benchmark/api/render.benchmark.cpp')
-rw-r--r-- | benchmark/api/render.benchmark.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/benchmark/api/render.benchmark.cpp b/benchmark/api/render.benchmark.cpp new file mode 100644 index 0000000000..a1b557777f --- /dev/null +++ b/benchmark/api/render.benchmark.cpp @@ -0,0 +1,78 @@ +#include <benchmark/benchmark.h> + +#include <mbgl/map/map.hpp> +#include <mbgl/map/map_observer.hpp> +#include <mbgl/gl/headless_frontend.hpp> +#include <mbgl/util/default_thread_pool.hpp> +#include <mbgl/renderer/renderer.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; + 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; + HeadlessFrontend frontend { { 1000, 1000 }, 1, bench.fileSource, bench.threadPool }; + Map map { frontend, MapObserver::nullObserver(), frontend.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Static}; + prepare(map); + + while (state.KeepRunning()) { + frontend.render(map); + } +} + +static void API_renderStill_reuse_map_switch_styles(::benchmark::State& state) { + RenderBenchmark bench; + HeadlessFrontend frontend { { 1000, 1000 }, 1, bench.fileSource, bench.threadPool }; + Map map { frontend, MapObserver::nullObserver(), frontend.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Static}; + + while (state.KeepRunning()) { + prepare(map, { "{}" }); + frontend.render(map); + prepare(map); + frontend.render(map); + } +} + +static void API_renderStill_recreate_map(::benchmark::State& state) { + RenderBenchmark bench; + + while (state.KeepRunning()) { + HeadlessFrontend frontend { { 1000, 1000 }, 1, bench.fileSource, bench.threadPool }; + Map map { frontend, MapObserver::nullObserver(), frontend.getSize(), 1, bench.fileSource, bench.threadPool, MapMode::Static}; + prepare(map); + frontend.render(map); + } +} + +BENCHMARK(API_renderStill_reuse_map); +BENCHMARK(API_renderStill_reuse_map_switch_styles); +BENCHMARK(API_renderStill_recreate_map); |