Преглед изворни кода

+ define to be able to use epiktimer for time measurements
* write milliseconds correctly when not using epiktimer

git-svn-id: trunk@30471 -

florian пре 10 година
родитељ
комит
29c28fd710
1 измењених фајлова са 35 додато и 5 уклоњено
  1. 35 5
      tests/bench/timer.pas

+ 35 - 5
tests/bench/timer.pas

@@ -1,9 +1,10 @@
+{ $define USEEPIK}
 unit timer;
 
   interface
 
     uses
-       SysUtils;
+       SysUtils{$ifdef USEEPIK},epiktimer{$endif USEEPIK};
 
     var
        verbosetimer : boolean = true;
@@ -15,7 +16,11 @@ unit timer;
   implementation
 
     var
+{$ifdef USEEPIK}
+       et : TEpiktimer;
+{$else EPIKTIMER}
        stime,etime : cardinal;
+{$endif USEEPIK}
 
     function gt : cardinal;
 
@@ -34,24 +39,49 @@ unit timer;
     procedure start;
 
       begin
-         stime:=gt;
+{$ifdef USEEPIK}
+        et:=TEpikTimer.Create;
+        et.Start;
+{$else USEEPIK}
+        stime:=gt;
+{$endif USEEPIK}
       end;
 
     procedure stop;
 
       var
+{$ifdef USEEPIK}
+         e : extended;
+{$else USEEPIK}
          s : cardinal;
+{$endif USEEPIK}
 
       begin
+{$ifdef USEEPIK}
+         e:=et.elapsed;
+         et.Free;
+{$else USEEPIK}
          etime:=gt;
          s:=etime-stime;
-	 if verbosetimer then
-           write(stderr,s div 1000,'.',s mod 1000,' Seconds');
-     end;
+{$endif USEEPIK}
+         if verbosetimer then
+{$ifdef USEEPIK}
+           write(stderr,e:0:6,' Seconds');
+{$else USEEPIK}
+           write(stderr,s div 1000,'.',format('%03d',[s mod 1000]),' Seconds');
+{$endif USEEPIK}
+      end;
 
+{$ifdef USEEPIK}
+    function MSec:cardinal;
+      begin
+        Msec:=round(et.elapsed*1000);
+      end;
+{$else USEEPIK}
     function MSec:cardinal;
       begin
         Msec:=etime-stime;
       end;
+{$endif USEEPIK}
 
 end.