From 88ef7d89c46b4c4e6e8ad84a5c8e9f410ef6d3cb Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Mon, 20 May 2019 14:23:39 +0300 Subject: [benchmark] Add benchmark for tile invalidation --- benchmark/benchmark-files.json | 1 + benchmark/storage/offline_database.benchmark.cpp | 54 ++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 benchmark/storage/offline_database.benchmark.cpp (limited to 'benchmark') diff --git a/benchmark/benchmark-files.json b/benchmark/benchmark-files.json index e3ad80072b..a05fdfc4c2 100644 --- a/benchmark/benchmark-files.json +++ b/benchmark/benchmark-files.json @@ -10,6 +10,7 @@ "benchmark/parse/tile_mask.benchmark.cpp", "benchmark/parse/vector_tile.benchmark.cpp", "benchmark/src/mbgl/benchmark/benchmark.cpp", + "benchmark/storage/offline_database.benchmark.cpp", "benchmark/util/dtoa.benchmark.cpp", "benchmark/util/tilecover.benchmark.cpp" ], diff --git a/benchmark/storage/offline_database.benchmark.cpp b/benchmark/storage/offline_database.benchmark.cpp new file mode 100644 index 0000000000..2adce537f0 --- /dev/null +++ b/benchmark/storage/offline_database.benchmark.cpp @@ -0,0 +1,54 @@ +#include + +#include +#include +#include +#include +#include + +class OfflineDatabase : public benchmark::Fixture { +public: + void SetUp(const ::benchmark::State&) override { + using namespace mbgl; + using namespace std::chrono_literals; + + const unsigned tileCount = 10000; + db.setOfflineMapboxTileCountLimit(tileCount * 2); + + Response response; + response.noContent = true; + response.mustRevalidate = false; + response.expires = util::now() + 1h; + + for (unsigned i = 0; i < tileCount; ++i) { + const Resource ambient = Resource::tile("mapbox://tile_ambient" + util::toString(i), 1, 0, 0, 0, Tileset::Scheme::XYZ); + db.put(ambient, response); + } + + OfflineTilePyramidRegionDefinition definition{ "mapbox://style", LatLngBounds::hull({1, 2}, {3, 4}), 5, 6, 2.0, true }; + OfflineRegionMetadata metadata{{ 1, 2, 3 }}; + + auto region = db.createRegion(definition, metadata); + regionID = region->getID(); + + for (unsigned i = 0; i < tileCount; ++i) { + const Resource offline = Resource::tile("mapbox://tile_offline_region" + util::toString(i), 1.0, 0, 0, 0, Tileset::Scheme::XYZ); + db.putRegionResource(regionID, offline, response); + } + } + + mbgl::OfflineDatabase db{":memory:"}; + int64_t regionID; +}; + +BENCHMARK_F(OfflineDatabase, InvalidateRegion)(benchmark::State& state) { + for (auto _ : state) { + db.invalidateRegion(regionID); + } +} + +BENCHMARK_F(OfflineDatabase, InvalidateTileCache)(benchmark::State& state) { + for (auto _ : state) { + db.invalidateTileCache(); + } +} -- cgit v1.2.1