CachingPerformance.java
Home
/
src /
main /
java /
br /
ufrgs /
inf /
prosoft /
memoizeit /
cache /
CachingPerformance.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.ufrgs.inf.prosoft.memoizeit.cache;
/**
*
* @author romulo
*/
public class CachingPerformance {
private int misses;
private int hits;
private int invalidations;
private int maximumSize;
void reduce(CachingPerformance cachingPerformance) {
this.misses += cachingPerformance.misses;
this.hits += cachingPerformance.hits;
this.invalidations += cachingPerformance.invalidations;
this.maximumSize = Math.max(this.maximumSize, cachingPerformance.maximumSize);
}
public void registerHit() {
this.hits++;
}
public void registerMiss() {
this.misses++;
}
public void registerInvalidation() {
this.invalidations++;
}
public void registerEntry() {
this.maximumSize++;
}
public void registerSize(int size) {
this.maximumSize = Math.max(this.maximumSize, size);
}
public long getHitRatio() {
return Math.round(this.hits * 100.0 / (this.hits + this.misses));
}
public String needInvalidation() {
return this.invalidations > 0 ? "yes" : "no";
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("H").append(this.hits);
stringBuilder.append(" M").append(this.misses);
stringBuilder.append(" I").append(this.invalidations);
stringBuilder.append(" S").append(this.maximumSize);
return stringBuilder.toString();
}
}