kit/Kit.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-)
New commits: commit 9608935a7c2b64cc5294f491c007d9013d85d12a Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Nov 27 00:58:30 2016 -0500 loolwsd: png cache hit rate and cosmetics Change-Id: I66ab1738503618002bb05504c608969d5aa7b9a9 Reviewed-on: https://gerrit.libreoffice.org/31290 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/kit/Kit.cpp b/kit/Kit.cpp index 15fd559..68099cf 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -278,6 +278,8 @@ class PngCache } } ; size_t _cacheSize; + size_t _cacheHits; + size_t _cacheTests; std::map< uint64_t, CacheEntry > _cache; void balanceCache() @@ -291,7 +293,8 @@ class PngCache avgHits += it->second._hitCount; LOG_DBG("cache " << _cache.size() << " items total size " << - _cacheSize << " total hits " << avgHits << " at balance start"); + _cacheSize << " current hits " << avgHits << ", total hit rate " << + (_cacheHits * 100. / _cacheTests) << "% at balance start"); avgHits /= _cache.size(); for (auto it = _cache.begin(); it != _cache.end();) @@ -299,7 +302,7 @@ class PngCache if (it->second._hitCount <= avgHits) { _cacheSize -= it->second._data->size(); - _cache.erase(it++); + it = _cache.erase(it); } else { @@ -320,10 +323,13 @@ class PngCache { uint64_t hash = png::hashSubBuffer(pixmap, startX, startY, width, height, bufferWidth, bufferHeight); - if (hash) { + if (hash) + { + ++_cacheTests; auto it = _cache.find(hash); if (it != _cache.end()) { + ++_cacheHits; LOG_DBG("PNG cache with hash " << hash << " hit."); output.insert(output.end(), it->second._data->begin(), @@ -332,6 +338,7 @@ class PngCache return true; } } + LOG_DBG("PNG cache with hash " << hash << " missed."); CacheEntry newEntry(bufferWidth * bufferHeight * 1); if (png::encodeSubBufferToPNG(pixmap, startX, startY, width, height, @@ -340,9 +347,10 @@ class PngCache { if (hash) { - _cache.insert(std::pair< uint64_t, CacheEntry >( hash, newEntry )); + _cache.emplace(hash, newEntry); _cacheSize += newEntry._data->size(); } + output.insert(output.end(), newEntry._data->begin(), newEntry._data->end()); @@ -354,9 +362,13 @@ class PngCache } public: - PngCache() : _cacheSize(0) + PngCache() : + _cacheSize(0), + _cacheHits(0), + _cacheTests(0) { } + bool encodeBufferToPNG(unsigned char* pixmap, int width, int height, std::vector<char>& output, LibreOfficeKitTileMode mode) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits