Componentes.Terceros.jcl/official/1.100/devtools/JVCLConvert/FastTime.pas

67 lines
1.6 KiB
ObjectPascal

//-----------------------------------------------------------------------
// A fast timer. Based upon original code (TmwFastTime) by Martin
// Waldenburg in 1996. This version descends from TObject, so we
// don't have to mess around installing it on the component palette.
//-----------------------------------------------------------------------
unit FastTime;
interface
uses
SysUtils, Windows, Classes;
type
TFastTimer = class(TObject)
private
nStart, nStop: TLargeInteger;
function GetElapsedTime: String;
function GetElapsed: Extended;
function GetElapsedMicroSeconds: TLargeInteger;
public
property Elapsed: Extended read GetElapsed;
property ElapsedMicroseconds: TLargeInteger read GetElapsedMicroSeconds;
property ElapsedTime: String read GetElapsedTime;
procedure Start;
procedure Stop;
end;
var
FastTimer: TFastTimer;
Frequency: TLargeInteger;
implementation
function TFastTimer.GetElapsed: Extended;
begin
Result:= (nStop - nStart) / Frequency;
end;
function TFastTimer.GetElapsedTime: String;
begin
Result := Format ('Seconds: %g', [GetElapsed]);
end;
function TFastTimer.GetElapsedMicroSeconds: TLargeInteger;
begin
Result := Trunc (GetElapsed * 1000000.0);
end;
procedure TFastTimer.Start;
begin
QueryPerformanceCounter (nStart);
end;
procedure TFastTimer.Stop;
begin
QueryPerformanceCounter (nStop);
end;
initialization
QueryPerformanceFrequency (Frequency);
FastTimer := TFastTimer.Create;
finalization
FastTimer.Free;
end.