Browse Source

DfsBlockCache: Update hits to not include contains()

Also expose the underlying hit and miss counters, in
addition to the hit ratio.

Change-Id: Icea2572d62e59318133b0a88848019f34ad70975
stable-1.2
Colby Ranger 13 years ago committed by Shawn O. Pearce
parent
commit
f70ecabb30
  1. 35
      org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsBlockCache.java

35
org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsBlockCache.java

@ -230,6 +230,21 @@ public final class DfsBlockCache {
return getCurrentSize() * 100 / maxBytes;
}
/** @return number of requests for items in the cache. */
public long getHitCount() {
return statHit.get();
}
/** @return number of requests for items not in the cache. */
public long getMissCount() {
return statMiss.get();
}
/** @return total number of requests (hit + miss). */
public long getTotalRequestCount() {
return getHitCount() + getMissCount();
}
/** @return 0..100, defining number of cache hits. */
public long getHitRatio() {
long hits = statHit.get();
@ -315,8 +330,10 @@ public final class DfsBlockCache {
int slot = slot(key, position);
HashEntry e1 = table.get(slot);
DfsBlock v = scan(e1, key, position);
if (v != null)
if (v != null) {
statHit.incrementAndGet();
return v;
}
reserveSpace(blockSize);
ReentrantLock regionLock = lockFor(key, position);
@ -326,6 +343,7 @@ public final class DfsBlockCache {
if (e2 != e1) {
v = scan(e2, key, position);
if (v != null) {
statHit.incrementAndGet();
creditSpace(blockSize);
return v;
}
@ -469,6 +487,8 @@ public final class DfsBlockCache {
T val = (T) scan(table.get(slot(key, position)), key, position);
if (val == null)
statMiss.incrementAndGet();
else
statHit.incrementAndGet();
return val;
}
@ -500,17 +520,8 @@ public final class DfsBlockCache {
@SuppressWarnings("unchecked")
private <T> T scan(HashEntry n, DfsPackKey pack, long position) {
for (; n != null; n = n.next) {
Ref<T> r = n.ref;
if (r.pack != pack || r.position != position)
continue;
T v = r.get();
if (v == null)
return null;
statHit.incrementAndGet();
return v;
}
return null;
Ref<T> r = scanRef(n, pack, position);
return r != null ? r.get() : null;
}
@SuppressWarnings("unchecked")

Loading…
Cancel
Save