package util; import java.util.concurrent.TimeUnit; /** * Adapted from http://memorynotfound.com/calculating-elapsed-time-java/ */ public class TimeWatch { private long starts; private TimeWatch() { reset(); } public static TimeWatch start() { return new TimeWatch(); } private TimeWatch reset() { starts = System.nanoTime(); return this; } private long time() { long ends = System.nanoTime(); return ends - starts; } private long time(TimeUnit unit) { return unit.convert(time(), TimeUnit.NANOSECONDS); } private String toMinuteSeconds() { return String.format("%d min, %d sec", time(TimeUnit.MINUTES), time(TimeUnit.SECONDS) - time(TimeUnit.MINUTES)); } public String toFullTime() { long hours = time(TimeUnit.HOURS); long minutes = time(TimeUnit.MINUTES) - TimeUnit.HOURS.toMinutes(hours); long seconds = time(TimeUnit.SECONDS) - TimeUnit.HOURS.toSeconds(hours) - TimeUnit.MINUTES.toSeconds(minutes); long milliseconds = time(TimeUnit.MILLISECONDS) - TimeUnit.HOURS.toMillis(hours) - TimeUnit.MINUTES.toMillis(minutes) - TimeUnit.SECONDS.toMillis(seconds); return String.format("%d h, %d min, %d s, %d ms", hours, minutes, seconds, milliseconds); } public String toString() { return "Elapsed Time in nano seconds: "; } }