Advertisement
jdalbey

MinMaxTime

Jan 17th, 2014
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. /**This class helps to measurement the cycle- and calculation times of any cyclically routine.
  2. * @author Hartmut Schorrig
  3. * @since 2010-07-14
  4. */
  5. public class MinMaxTime
  6. {
  7. int init = 0;
  8. double minCyclTime;
  9. double midCyclTime;
  10. double maxCyclTime;
  11. double minCalcTime;
  12. double midCalcTime;
  13. double maxCalcTime;
  14. long _lastTime;
  15. double _startTime;
  16. /**Factor to calc to millisec. */
  17. double ms;
  18.  
  19. /**Call it at start of the cyclically operation. */
  20. public void cyclTime()
  21. {
  22. long t = System.nanoTime();
  23. if(init == 0)
  24. init = 1; //only save time.
  25. else
  26. {
  27. double cyclTime = ms * (double)(t - _lastTime);
  28. if(init == 1)
  29. {
  30. init = 2;
  31. minCyclTime = midCyclTime = maxCyclTime = cyclTime;
  32. }
  33. if(cyclTime > maxCyclTime)
  34. {
  35. maxCyclTime = cyclTime;
  36. }
  37. if(cyclTime < minCyclTime)
  38. {
  39. minCyclTime = cyclTime;
  40. }
  41. midCyclTime += (cyclTime - midCyclTime) * 0.01;
  42. }
  43. _lastTime = t;
  44.  
  45. }
  46.  
  47. /**Call it at end of the cyclically operation. */
  48. public void calcTime()
  49. {
  50. long time = System.nanoTime();
  51. double calcTime = ms * (double)(time - _lastTime);
  52. if(init!=2)
  53. minCalcTime = midCalcTime = maxCyclTime = calcTime;
  54. if(calcTime > maxCalcTime)
  55. {
  56. maxCalcTime = calcTime;
  57. }
  58. if(calcTime < minCalcTime)
  59. {
  60. minCalcTime = calcTime;
  61. }
  62. midCalcTime += (calcTime - midCalcTime) * 0.01;
  63. _lastTime = time;
  64.  
  65. }
  66.  
  67. public void adjust()
  68. {
  69. _lastTime = System.nanoTime();
  70. try
  71. {
  72. Thread.sleep(100);
  73. }
  74. catch(InterruptedException exc)
  75. {
  76.  
  77. }
  78. long t100ms = System.nanoTime() - _lastTime;
  79. ms = 100.0 / t100ms;
  80. }
  81.  
  82. public void init()
  83. {
  84. init = 0 ;
  85. }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement