CachingPerformance.java

65 lines | 1.653 kB Blame History Raw Download
/*
 * 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();
    }

}