TStopWatch 基本知识

System.Diagnostics.pas:

 

Delphi includes a helpful unit called System.Diagnostics , which implements a

TStopwatch record. It allows us to measure time events with a better precision than 1
millisecond and has a pretty exhaustive public interface, as shown in the code fragment
below:

 

 TStopwatch = record
  strict private
    class var FFrequency: Int64;
    class var FIsHighResolution: Boolean;
    class var TickFrequency: Double;
  strict private
    FElapsed: Int64;
    FRunning: Boolean;
    FStartTimeStamp: Int64;
    function GetElapsed: TTimeSpan;
    function GetElapsedDateTimeTicks: Int64;
    function GetElapsedMilliseconds: Int64;
    function GetElapsedTicks: Int64;
    class procedure InitStopwatchType; static;
  public
    class function Create: TStopwatch; static;
    class function GetTimeStamp: Int64; static;
    procedure Reset;
    procedure Start;
    class function StartNew: TStopwatch; static;
    procedure Stop;
    property Elapsed: TTimeSpan read GetElapsed;
    property ElapsedMilliseconds: Int64 read GetElapsedMilliseconds;
    property ElapsedTicks: Int64 read GetElapsedTicks;
    class property Frequency: Int64 read FFrequency;
    class property IsHighResolution: Boolean read FIsHighResolution;
    property IsRunning: Boolean read FRunning;
  end;

To use a stopwatch, you first have to create it. You can call TStopwatch.Create to create a

new stopped stopwatch or TStopwatch.StartNew to create a new started stopwatch. As
TStopwatch is implemented as a record , there's no need to destroy a stopwatch object.
When a stopwatch is started, it is measuring time. To start a stopwatch, call the Start
method and to stop it, call the Stop method. The IsRunning property will tell you if the
stopwatch is currently started. Call the Reset method to reset the stopwatch to zero.

 

 

The TStopwatch contains a few functions that return the currently measured time. The

most precise of them is ElapsedTicks , but as there is no built-in (public) function to
convert this into standard time units, this function is hard to use. My recommendation is to
just use the ElapsedMilliseconds property which will give you elapsed (measured) time
in milliseconds.

 

posted @ 2018-07-27 11:09  BSor  阅读(216)  评论(0编辑  收藏  举报