如何使用 QueryPerformanceCounter 在几秒钟内获取结果

How to use QueryPerformanceCounter to get results in seconds?

本文关键字:几秒 钟内 获取 结果 何使用 QueryPerformanceCounter      更新时间:2023-10-16
BOOL QueryPerformanceCounter(
__out LARGE_INTEGER *lpPerformanceCount
);
LARGE_IN
TEGER startTimer()
{
LARGE_INTEGER start;
DWORD_PTR oldmask = SetThreadAffinityMask(GetCurrentThread(), 0);
QueryPerformanceCounter(&start);
SetThreadAffinityMask(GetCurrentThread(), oldmask);
return
start;
}
LARGE_INTEGER endTimer()
{
LARGE_INTE
GER stop;
DWORD_PTR oldmask = SetThreadAffinityMask(GetCurrentThread(), 0);
QueryPerformanceCounter(&stop);
SetThreadAffinityMask(GetCurrentThread(), oldmask);
return
stop;
}

我正在使用这些函数,但我不确定它以什么类型返回值。结束计时器 - 开始计时器 = ? 如何将此结果转换为秒数?

您需要获取频率并将 2 个计数器的差异除以它。

LARGE_INTEGER fr,t1,t2;
QueryPerformanceCounter(&t1);
// some lengthy code ...
QueryPerformanceCounter(&t2);
QueryPerformanceFrequency(&fr);
double diff_sec = (t2.QuadPart-t1.QuadPart)/(double)fr.QuadPart;