#include #include #include #include #include #include #include #include #include #include #include #include #include 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 map.addImage("test-icon", std::make_unique( decodeImage(util::read_file("benchmark/fixtures/api/default_marker.png")), 1.0)); mbgl::benchmark::render(map, view); } util::RunLoop loop; HeadlessBackend backend; BackendScope scope { backend }; OffscreenView view{ backend.getContext(), { 1000, 1000 } }; DefaultFileSource fileSource{ "benchmark/fixtures/api/cache.db", "." }; ThreadPool threadPool{ 4 }; Map map{ backend, view.getSize(), 1, fileSource, threadPool, 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);