用delphi语言获得微秒的时间

时间:2014-05-28 14:01:19

标签: delphi

我使用delphi语言,我需要以微秒计算进程的时间。

我可以用小时秒和毫秒计算时间,是否有任何以微秒为单位的计算时间函数?

2 个答案:

答案 0 :(得分:6)

有一个依赖于CPU的高分辨率性能计数器"您可以使用QueryPerformanceCounter() API调用进行访问。

QueryPerformanceCounter()为您提供该效果计数器的值。 (从历史上看,性能计数器只是CPU周期的计数,但超线程和多核CPU已经使其不可靠,所以现在只测量一些非常小的时间间隔,<1us)

要了解这个时间单位,请使用QueryPerformanceFrequency()。这为您提供了每秒高分辨率性能计数器单元的数量。为了获得每微秒的数量,除以1000000.在我的Sandy Bridge i7上,它每微秒大约35个单位。

一些代码:

使用QueryPerformanceCounter来衡量某些代码的执行时间:

var
  StartTime, EndTime, Delta: Int64;
begin
  QueryPerformanceCounter(StartTime);
  //Code you want to measure here
  QueryPerformanceCounter(EndTime);
  Delta := EndTime - StartTime;
  //Show Delta so you know the elapsed time
end;

使用QueryPerformanceFrequency查找微秒内有多少高分辨率单位:

var
  Frequency, UnitsPerMS: Int64;
begin
  QueryPerformanceFrequency(Frequency);
  UnitsPerMS := Frequency div 1000000;
end;

答案 1 :(得分:4)

听起来我真正想要使用的是TStopWatch类型。这为QueryPerformanceCounter()和相关API提供了Delphi包装,并隐藏了您的所有详细信息。这是System.Diagnostics单元,可从Delphi 2010获得。