如何计算函数的经过时间?

Hid*_*den 16 delphi time function delphi-xe3

我想知道如何计算Delphi中函数的消耗时间.

然后我想显示使用的时间并将其与另一个函数或组件进行比较,以便了解更快的函数.

Dav*_*nan 53

您可以使用系统的高分辨率性能计数器使用TStopwatchSystem.Diagnostics机测量经过的时间.

var
  Stopwatch: TStopwatch;
  Elapsed: TTimeSpan;
....
Stopwatch := TStopwatch.StartNew;
DoSomething;
Elapsed := Stopwatch.Elapsed;
Run Code Online (Sandbox Code Playgroud)

要以秒为单位读取时间值(例如,从时间跨度),请执行以下操作:

var
  Seconds: Double;
....
Seconds := Elapsed.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)

  • @ david-heffernan for**Delphi 10 Seattle**你必须`import System.TimeSpan`另外成功使用`Elapsed:TTimeSpan`. (8认同)
  • 大卫,我的英雄。谢谢 (2认同)
  • 你不可以。这不是有效的德尔福。 (2认同)
  • @fmmatheus 我想我指的是`import` 不是delphi。 (2认同)

And*_*and 21

你可以使用QueryPerformanceCounterQueryPerformanceFrequency功能:

var
  c1, c2, f: Int64;
begin
  QueryPerformanceFrequency(f);
  QueryPerformanceCounter(c1);
  DoSomething;
  QueryPerformanceCounter(c2);

  // Now (c2-c1)/f is the duration in secs of DoSomething
Run Code Online (Sandbox Code Playgroud)

  • @Andreas,我个人建议使用Delphi XE3的[`TStopWatch`](http://docwiki.embarcadero.com/Libraries/XE3/en/System.Diagnostics.TStopwatch).[1] (10认同)
  • @AndreasRejbrand,`TStopWatch`在这里可以作为一个类,[`如何使用高分辨率性能计数器准确测量经过的时间](http://delphi.about.com/od/windowsshellapi/a/delphi-high-性能定时器tstopwatch.htm). (5认同)