diff options
author | reed <reed@google.com> | 2015-02-25 07:17:11 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-25 07:17:11 -0800 |
commit | 83787d0ff0a2b2f839a4a3ce6dadd033f83fe643 (patch) | |
tree | abc0791b564824241daf23640ba04f4513bbb5b6 /src/core/SkResourceCache.cpp | |
parent | 8673765ab59beec47d0ec8d057ff218e550e658f (diff) |
only notify bitmaps that have been added to the cache
old code:
- calls=2677 hit-rate=3.51139%
new code:
- calls=94 hit-rate=97.8723%
BUG=skia:
Review URL: https://codereview.chromium.org/960563002
Diffstat (limited to 'src/core/SkResourceCache.cpp')
-rw-r--r-- | src/core/SkResourceCache.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/core/SkResourceCache.cpp b/src/core/SkResourceCache.cpp index 9da90c45dc..43e752b38d 100644 --- a/src/core/SkResourceCache.cpp +++ b/src/core/SkResourceCache.cpp @@ -305,11 +305,22 @@ void SkResourceCache::purgeAsNeeded(bool forcePurge) { } } +//#define SK_TRACK_PURGE_SHAREDID_HITRATE + +#ifdef SK_TRACK_PURGE_SHAREDID_HITRATE +static int gPurgeCallCounter; +static int gPurgeHitCounter; +#endif + void SkResourceCache::purgeSharedID(uint64_t sharedID) { if (0 == sharedID) { return; } +#ifdef SK_TRACK_PURGE_SHAREDID_HITRATE + gPurgeCallCounter += 1; + bool found = false; +#endif // go backwards, just like purgeAsNeeded, just to make the code similar. // could iterate either direction and still be correct. Rec* rec = fTail; @@ -318,9 +329,21 @@ void SkResourceCache::purgeSharedID(uint64_t sharedID) { if (rec->getKey().getSharedID() == sharedID) { // SkDebugf("purgeSharedID id=%llx rec=%p\n", sharedID, rec); this->remove(rec); +#ifdef SK_TRACK_PURGE_SHAREDID_HITRATE + found = true; +#endif } rec = prev; } + +#ifdef SK_TRACK_PURGE_SHAREDID_HITRATE + if (found) { + gPurgeHitCounter += 1; + } + + SkDebugf("PurgeShared calls=%d hits=%d rate=%g\n", gPurgeCallCounter, gPurgeHitCounter, + gPurgeHitCounter * 100.0 / gPurgeCallCounter); +#endif } size_t SkResourceCache::setTotalByteLimit(size_t newLimit) { |