用delphi语言获得微秒的时间

use*_*824 1 delphi

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

我可以用小时秒和毫秒来计算时间,在delphi语言中是否有以微秒为单位的计算时间函数?

jth*_*man 6

您可以通过QueryPerformanceCounter()API调用访问与CPU相关的"高分辨率性能计数器" .

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;
Run Code Online (Sandbox Code Playgroud)

使用QueryPerformanceFrequency找出高分辨率的单位有多少是在一微秒:

var
  Frequency, UnitsPerMS: Int64;
begin
  QueryPerformanceFrequency(Frequency);
  UnitsPerMS := Frequency div 1000000;
end;
Run Code Online (Sandbox Code Playgroud)

  • 是的,只要您使用的是Delphi XE(我认为)或更新版本.由于问题没有说明使用哪个Delphi版本,我给出了一个更"普遍"的答案. (3认同)