{
Mattias Hansson (d92mh@efd.lth.se) wrote:
: I wonder if there is any way to check how fast a program is executing.
: The program should look like this

: ...
: starttime:="CPU-time"
: ... doing something ...
: stoptime:="CPU-time"
: execution-time:=stoptime-starttime
: ...

: IS IT POSSIBLE IN PASCAL ?

I mad somethink LONG LONG ago, so it may be wrong, slow buggy etc.. 

-- CUT HERE ---
}
unit DURATION;

interface

uses dos;

var  starttime,endtime,dauer : STRING[22];

procedure startzeit;
{r da, um die StartZeit festzulegen }
procedure endzeit;
{r da, um die EndZeit festzulegen }
procedure zeitformat;
{ Berechnet die Dauer, und Formatiert die Strings }

implementation

var hour,minute,second,thousend     : integer;
    hour1,minute1,second1,thousend1,
    hour2,minute2,second2,thousend2 : word;

procedure startzeit;
begin
  GetTime(hour1,minute1,second1,thousend1);
end;

procedure endzeit;
begin
  GetTime(hour2,minute2,second2,thousend2);
end;

PROCEDURE zeitformat;
VAR strngs : STRING[2];
BEGIN
  starttime:='';       { Etwas kompliziert zu lesen, mir fiel aber }
  endtime :='';        { nichts anderes ein...                     }
  dauer   :='';
  Str(hour1,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  starttime:=starttime+strngs+':';
  Str(minute1,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  starttime:=starttime+strngs+':';
  Str(second1,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  starttime:=starttime+strngs+'.';
  Str(thousend1,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  starttime:=starttime+strngs;
  Str(hour2,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  endtime:=endtime+strngs+':';
  Str(minute2,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  endtime:=endtime+strngs+':';
  Str(second2,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  endtime:=endtime+strngs+'.';
  Str(thousend2,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  endtime:=endtime+strngs;
  IF hour1>hour2 THEN
    BEGIN
      hour:=24+hour2-hour1;
    END
  ELSE hour:=hour2-hour1;
  IF minute1>minute2 THEN
    BEGIN
      minute:=60+minute2-minute1;
      hour:=hour-1;
    END
  ELSE minute:=minute2-minute1;
  IF second1>second2 THEN
    BEGIN
      second:=60+second2-second1;
      minute:=minute-1;
    END
  ELSE second:=second2-second1;
  IF thousend1>thousend2 THEN
    BEGIN
      thousend:=100+thousend2-thousend1;
      second:=second-1;
    END
  ELSE thousend:=thousend2-thousend1;
  Str(hour,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  dauer:=dauer+strngs+':';
  Str(minute,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  dauer:=dauer+strngs+':';
  Str(second,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  dauer:=dauer+strngs+'.';
  Str(thousend,strngs);
  IF Length(strngs)<2 THEN Insert('0',strngs,1);
  dauer:=dauer+strngs;
END;

end.
