package me.hammerle.snuviengine.util; public class Clock { private final int dataLength; private final long[] data; private int index = 0; private long sum = 0; private long time; private boolean stable = false; private long min = Long.MAX_VALUE; private long avg = - 1; public Clock(int dataLength) { this.dataLength = dataLength; data = new long[dataLength]; } public void start() { time = System.nanoTime(); } public void stop() { time = System.nanoTime() - time; sum -= data[index]; sum += time; data[index] = time; index = (index + 1) % dataLength; if(index == 0) { stable = true; } } public void calculate() { if(stable) { avg = sum / dataLength; if(avg < min) { min = avg; } } } public long getTime() { if(stable) { return avg; } return -1; } public long getMinTime() { if(stable) { return min; } return -1; } }