1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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;
- }
- }
|