QueryPerformanceCounter() Test for Windows Embedded Compact

QueryPerformanceCounter() Test for Windows Embedded Compact 7

本文关键字:Windows Embedded Compact for Test QueryPerformanceCounter      更新时间:2023-10-16

遍历 QueryPerformanceCounter() 并保存值:

// Main loop for timer test
for ( int i = 0; i < ITERATIONS; i++ ) // ITERATIONS = 1000
{
    QueryPerformanceCounter(&li);
    time[i] = double(li.QuadPart) / PCFreq; //1,193,182 per second
}
//calculate the difference between each call 
// and save in difference[]
for ( int j = 0; j < (ITERATIONS - 1)  ; j++ )
{
    difference[j] = time[j+1] - time[j];
}

(除以 PCFreq 表示每次调用之间的时间。

高分辨率计时器/计数器应该工作,因为它没有返回默认频率 1000。

每个时间戳之间的平均值为 11.990884 微秒(一千个时间戳调用)。

这似乎非常缓慢。

这个测试有缺陷吗?

或者为什么它在 1.1Ghz 赛扬上报告如此缓慢的值的想法?

第一个循环中消除浮点数学可能是值得的,以便将 Win 7 桌面和嵌入式紧凑型 7 之间的(潜在)差异排除在外。所以,像这样:

LARGE_INTEGER counter[ITERATIONS];
// Main loop for timer test
for ( int i = 0; i < ITERATIONS; i++ ) // ITERATIONS = 1000
{
    QueryPerformanceCounter(&counter[i]);
}
time[0] = double(counter[0].QuadPart) / PCFreq; //1,193,182 per second
//calculate the difference between each call 
// and save in difference[]
for ( int j = 0; j < (ITERATIONS - 1)  ; j++ )
{
    time[j+1] = double(counter[j+1].QuadPart) / PCFreq; //1,193,182 per second
    difference[j] = time[j+1] - time[j];
}