您可以通过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)
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |