fptime.pp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. uses
  2. bench,sysutils
  3. {$ifdef Unix}
  4. ,unix
  5. {$endif Unix}
  6. ;
  7. var
  8. i : longint;
  9. command,
  10. ps : ansistring;
  11. eticks,
  12. sticks : int64;
  13. paramoffset,
  14. runs,
  15. code,
  16. ProcessExitCode : Integer;
  17. begin
  18. ps:='';
  19. paramoffset:=0;
  20. runs:=1;
  21. if paramcount>0 then
  22. begin
  23. if paramstr(1)='-n' then
  24. begin
  25. val(paramstr(2),runs,code);
  26. if code<>0 then
  27. begin
  28. writeln('Illegal parameter');
  29. halt(1);
  30. end;
  31. paramoffset:=2;
  32. end;
  33. for i:=2+paramoffset to paramcount do
  34. ps:=ps+' "'+paramstr(i)+'"';
  35. sticks:=GetMicroSTicks;
  36. command:=paramstr(1+paramoffset);
  37. for i:=1 to runs do
  38. {$ifdef Unix}
  39. ProcessExitCode:=fpsystem(command+' '+ps);
  40. {$else Unix}
  41. ProcessExitCode:=ExecuteProcess(command,ps);
  42. {$endif Unix}
  43. eticks:=GetMicroSTicks;
  44. write(stderr,(eticks-sticks)/1000:0:3,' ms');
  45. if runs>1 then
  46. write(stderr,' (avg: ',(eticks-sticks)/runs/1000:0:3,' ms)');
  47. writeln(stderr);
  48. halt(ProcessExitCode);
  49. end;
  50. end.