timer.pas 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. { $define USEEPIK}
  2. unit timer;
  3. interface
  4. uses
  5. SysUtils{$ifdef USEEPIK},epiktimer{$endif USEEPIK};
  6. var
  7. verbosetimer : boolean = true;
  8. procedure start;
  9. procedure stop;
  10. function MSec:cardinal;
  11. implementation
  12. var
  13. {$ifdef USEEPIK}
  14. et : TEpiktimer;
  15. {$else EPIKTIMER}
  16. stime,etime : cardinal;
  17. {$endif USEEPIK}
  18. function gt : cardinal;
  19. var
  20. h,m,s,s1000 : word;
  21. begin
  22. decodetime(time,h,m,s,s1000);
  23. gt:=h*3600000+m*60000+s*1000+s1000;
  24. {
  25. gettime(h,m,s,s100);
  26. gt:=h*360000+m*6000+s*100+s100;
  27. }
  28. end;
  29. procedure start;
  30. begin
  31. {$ifdef USEEPIK}
  32. et:=TEpikTimer.Create;
  33. et.Start;
  34. {$else USEEPIK}
  35. stime:=gt;
  36. {$endif USEEPIK}
  37. end;
  38. procedure stop;
  39. var
  40. {$ifdef USEEPIK}
  41. e : extended;
  42. {$else USEEPIK}
  43. s : cardinal;
  44. {$endif USEEPIK}
  45. begin
  46. {$ifdef USEEPIK}
  47. e:=et.elapsed;
  48. et.Free;
  49. {$else USEEPIK}
  50. etime:=gt;
  51. s:=etime-stime;
  52. {$endif USEEPIK}
  53. if verbosetimer then
  54. {$ifdef USEEPIK}
  55. write(stderr,e:0:6,' Seconds');
  56. {$else USEEPIK}
  57. write(stderr,s div 1000,'.',format('%.3d',[s mod 1000]),' Seconds');
  58. {$endif USEEPIK}
  59. end;
  60. {$ifdef USEEPIK}
  61. function MSec:cardinal;
  62. begin
  63. Msec:=round(et.elapsed*1000);
  64. end;
  65. {$else USEEPIK}
  66. function MSec:cardinal;
  67. begin
  68. Msec:=etime-stime;
  69. end;
  70. {$endif USEEPIK}
  71. end.