package org.epics.archiverappliance.common;
import java.util.LinkedHashMap;
/**
* Small easy to use profiler.
* Not much functionality here... Keep walking.
* @author mshankar
*
*/
public class PoorMansProfiler {
private LinkedHashMap<String, Long> steps = new LinkedHashMap<String, Long>();
private long startingTimeMS = -1;
private long latestMarkMS = -1;
public PoorMansProfiler() {
this.startingTimeMS = System.currentTimeMillis();
}
public void mark(String location) {
latestMarkMS = System.currentTimeMillis();
steps.put(location, latestMarkMS);
}
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("\n");
long previousTimeMS = startingTimeMS;
for(String location : steps.keySet()) {
Long currentTimeMS = steps.get(location);
buf.append(location);
buf.append(" --> ");
buf.append(currentTimeMS - previousTimeMS);
buf.append("(ms)\n");
previousTimeMS = currentTimeMS;
}
buf.append("Total");
buf.append(" --> ");
buf.append(latestMarkMS - startingTimeMS);
buf.append("(ms)\n");
return buf.toString();
}
public long totalTimeMS() {
return latestMarkMS - startingTimeMS;
}
}