diff options
author | Thiago Marcos P. Santos <thiago@mapbox.com> | 2016-10-04 18:39:54 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2016-10-05 11:12:16 +0300 |
commit | a38104ee2294117032891faca13ca7da834beaa3 (patch) | |
tree | 93871ecd554a893a72c735545e0b7158b5e022b9 /benchmark/api | |
parent | 82b801250ef69cc9dc5f73f64c41ce6d37b86270 (diff) | |
download | qtlocation-mapboxgl-a38104ee2294117032891faca13ca7da834beaa3.tar.gz |
[tests] Added benchmarks for querying for features
Diffstat (limited to 'benchmark/api')
-rw-r--r-- | benchmark/api/query.benchmark.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/benchmark/api/query.benchmark.cpp b/benchmark/api/query.benchmark.cpp new file mode 100644 index 0000000000..7fa0781450 --- /dev/null +++ b/benchmark/api/query.benchmark.cpp @@ -0,0 +1,72 @@ +#include <benchmark/benchmark.h> + +#include <mbgl/benchmark/util.hpp> +#include <mbgl/map/map.hpp> +#include <mbgl/platform/default/headless_display.hpp> +#include <mbgl/platform/default/headless_view.hpp> +#include <mbgl/sprite/sprite_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 QueryBenchmark { +public: + QueryBenchmark() { + NetworkStatus::Set(NetworkStatus::Status::Offline); + fileSource.setAccessToken("foobar"); + + map.setStyleJSON(util::read_file("benchmark/fixtures/api/query_style.json")); + map.setLatLngZoom({ 40.726989, -73.992857 }, 15); // Manhattan + + auto decoded = decodeImage(util::read_file("benchmark/fixtures/api/default_marker.png")); + auto image = std::make_unique<SpriteImage>(std::move(decoded), 1.0); + map.addImage("test-icon", std::move(image)); + + view.resize(1000, 1000); + + mbgl::benchmark::render(map); + } + + util::RunLoop loop; + std::shared_ptr<HeadlessDisplay> display{ std::make_shared<HeadlessDisplay>() }; + HeadlessView view{ display, 1 }; + DefaultFileSource fileSource{ "benchmark/fixtures/api/cache.db", "." }; + Map map{ view, fileSource, MapMode::Still }; + ScreenBox box{{ 0, 0 }, { 1000, 1000 }}; +}; + +} // end namespace + +static void API_queryRenderedFeaturesAll(::benchmark::State& state) { + QueryBenchmark bench; + + while (state.KeepRunning()) { + bench.map.queryRenderedFeatures(bench.box); + } +} + +static void API_queryRenderedFeaturesLayerFromLowDensity(::benchmark::State& state) { + QueryBenchmark bench; + + while (state.KeepRunning()) { + bench.map.queryRenderedFeatures(bench.box, {{ "testlayer" }}); + } +} + +static void API_queryRenderedFeaturesLayerFromHighDensity(::benchmark::State& state) { + QueryBenchmark bench; + + while (state.KeepRunning()) { + bench.map.queryRenderedFeatures(bench.box, {{ "road-street" }}); + } +} + +BENCHMARK(API_queryRenderedFeaturesAll); +BENCHMARK(API_queryRenderedFeaturesLayerFromLowDensity); +BENCHMARK(API_queryRenderedFeaturesLayerFromHighDensity); |