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