Clock.java 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package me.hammerle.snuviengine.util;
  2. public class Clock
  3. {
  4. private final int dataLength;
  5. private final long[] data;
  6. private int index = 0;
  7. private long sum = 0;
  8. private long time;
  9. private boolean stable = false;
  10. private long min = Long.MAX_VALUE;
  11. private long avg = - 1;
  12. public Clock(int dataLength)
  13. {
  14. this.dataLength = dataLength;
  15. data = new long[dataLength];
  16. }
  17. public void start()
  18. {
  19. time = System.nanoTime();
  20. }
  21. public void stop()
  22. {
  23. time = System.nanoTime() - time;
  24. sum -= data[index];
  25. sum += time;
  26. data[index] = time;
  27. index = (index + 1) % dataLength;
  28. if(index == 0)
  29. {
  30. stable = true;
  31. }
  32. }
  33. public void calculate()
  34. {
  35. if(stable)
  36. {
  37. avg = sum / dataLength;
  38. if(avg < min)
  39. {
  40. min = avg;
  41. }
  42. }
  43. }
  44. public long getTime()
  45. {
  46. if(stable)
  47. {
  48. return avg;
  49. }
  50. return -1;
  51. }
  52. public long getMinTime()
  53. {
  54. if(stable)
  55. {
  56. return min;
  57. }
  58. return -1;
  59. }
  60. }