summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmark/storage/offline_database.benchmark.cpp65
1 files changed, 65 insertions, 0 deletions
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 <mbgl/storage/response.hpp>
#include <mbgl/storage/sqlite3.hpp>
#include <mbgl/util/string.hpp>
+#include <mbgl/util/logging.hpp>
#include <random>
@@ -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<Log::NullObserver>());
+ 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;
+ }
+ }
+}