From e3fdc030f7014a8bbec3aeeb2e1dd50af3bd6b2c Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Fri, 14 Jun 2019 19:47:05 +0300 Subject: [benchmark] Add benchmark tests for resizing the database --- benchmark/storage/offline_database.benchmark.cpp | 65 ++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/benchmark/storage/offline_database.benchmark.cpp b/benchmark/storage/offline_database.benchmark.cpp index be17201f33..d4db846dd8 100644 --- a/benchmark/storage/offline_database.benchmark.cpp +++ b/benchmark/storage/offline_database.benchmark.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -129,3 +130,67 @@ BENCHMARK_F(OfflineDatabase, GetTile)(benchmark::State& state) { assert(res != nullopt); } } + +BENCHMARK_F(OfflineDatabase, AddTilesToFullDatabase)(benchmark::State& state) { + using namespace mbgl; + + Log::setObserver(std::make_unique()); + db.setMaximumAmbientCacheSize(50 * 1024 * 5); + + while (state.KeepRunning()) { + const Resource ambient = Resource::tile("mapbox://AddTilesToFullDatabase" + + util::toString(state.iterations()), 1, 0, 0, 0, Tileset::Scheme::XYZ); + db.put(ambient, response); + } + + Log::removeObserver(); +} + +BENCHMARK_F(OfflineDatabase, AddTilesToDisabledDatabase)(benchmark::State& state) { + using namespace mbgl; + + auto regions = db.listRegions().value(); + if (!regions.empty()) { + db.deleteRegion(std::move(regions[0])); + } + + // Disables the ambient cache. + db.setMaximumAmbientCacheSize(0); + + while (state.KeepRunning()) { + const Resource ambient = Resource::tile("mapbox://AddTilesToFullDatabase" + + util::toString(state.iterations()), 1, 0, 0, 0, Tileset::Scheme::XYZ); + db.put(ambient, response); + } +} + +BENCHMARK_F(OfflineDatabase, GetTileFromDisabledDatabase)(benchmark::State& state) { + using namespace mbgl; + + auto regions = db.listRegions().value(); + if (!regions.empty()) { + db.deleteRegion(std::move(regions[0])); + } + + // Disables the ambient cache. + db.setMaximumAmbientCacheSize(0); + + while (state.KeepRunning()) { + auto res = db.get(Resource::tile("mapbox://tile_ambient", 1, 0, 0, 0, Tileset::Scheme::XYZ)); + assert(res == nullopt); + } +} + +BENCHMARK_F(OfflineDatabase, ResizeDatabase)(benchmark::State& state) { + uint64_t size = 25 * 1024 * 1024; + + while (state.KeepRunning()) { + db.setMaximumAmbientCacheSize(size); + + size -= 256; + + if (!size) { + size = 25 * 1024 * 1024; + } + } +} -- cgit v1.2.1