Index: tools/bench_pictures_main.cpp |
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp |
index 0c7644f2441613caf6ed2c160de98bf5f67b1556..d027db96333aea524fd6177d9f52873573b6bdde 100644 |
--- a/tools/bench_pictures_main.cpp |
+++ b/tools/bench_pictures_main.cpp |
@@ -26,6 +26,7 @@ |
SkBenchLogger gLogger; |
// Flags used by this file, in alphabetical order. |
+DEFINE_bool(countRAM, false, "Count the RAM used for bitmap pixels in each skp file"); |
DECLARE_bool(deferImageDecoding); |
DEFINE_string(filter, "", |
"type:flag : Enable canvas filtering to disable a paint flag, " |
@@ -173,6 +174,13 @@ static bool run_single_benchmark(const SkString& inputPath, |
return false; |
} |
+ // Since the old picture has been deleted, all pixels should be cleared. |
+ SkASSERT(gLruImageCache.getImageCacheUsed() == 0); |
+ if (FLAGS_countRAM) { |
+ // Set the limit to zero, so all pixels will be kept |
+ gLruImageCache.setImageCacheLimit(0); |
+ } |
+ |
bool success = false; |
SkPicture* picture; |
if (FLAGS_deferImageDecoding) { |
@@ -204,11 +212,29 @@ static bool run_single_benchmark(const SkString& inputPath, |
int32_t cacheHits = SkLazyPixelRef::GetCacheHits(); |
int32_t cacheMisses = SkLazyPixelRef::GetCacheMisses(); |
SkLazyPixelRef::ResetCacheStats(); |
- SkDebugf("Cache hit rate: %f\n", (double) cacheHits / (cacheHits + cacheMisses)); |
+ SkString hitString; |
+ hitString.printf("Cache hit rate: %f\n", (double) cacheHits / (cacheHits + cacheMisses)); |
+ gLogger.logProgress(hitString); |
gTotalCacheHits += cacheHits; |
gTotalCacheMisses += cacheMisses; |
} |
#endif |
+ if (FLAGS_countRAM) { |
+ SkString ramCount("RAM used for bitmaps: "); |
+ size_t bytes = gLruImageCache.getImageCacheUsed(); |
+ if (bytes > 1024) { |
+ size_t kb = bytes / 1024; |
+ if (kb > 1024) { |
+ size_t mb = kb / 1024; |
+ ramCount.appendf("%zi MB\n", mb); |
+ } else { |
+ ramCount.appendf("%zi KB\n", kb); |
+ } |
+ } else { |
+ ramCount.appendf("%zi bytes\n", bytes); |
+ } |
+ gLogger.logProgress(ramCount); |
+ } |
return true; |
} |