summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <tmpsantos@gmail.com>2019-06-14 19:47:05 +0300
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-06-17 20:39:53 +0300
commite3fdc030f7014a8bbec3aeeb2e1dd50af3bd6b2c (patch)
tree6ccf33ce99787043e026730df541bdaeba395b58
parent005e4a2a84b4d1e9d9825a7fe8fc8dea369ca06a (diff)
downloadqtlocation-mapboxgl-upstream/tmpsantos-cache_resize.tar.gz
[benchmark] Add benchmark tests for resizing the databaseupstream/tmpsantos-cache_resize
-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;
+ }
+ }
+}