问题是我的程序太快以至于无法及时检测到变化,或GetTickCount(),我该如何防止这种情况发生?
谢谢
答案 0 :(得分:0)
您是否将运行时间打印为整数?如果你正在进行除法以获得经过的时间,则将分子或分母强制转换为浮点数。
答案 1 :(得分:0)
x
运行的时间和平均值。
此外,您可以使用分析来获得准确的时间。
答案 2 :(得分:0)
使用
void WINAPI GetSystemTimeAsFileTime(
_Out_ LPFILETIME lpSystemTimeAsFileTime
);
代替。它具有更好的分辨率。在大多数情况下,这确实是需要的。
答案 3 :(得分:0)
CodeProject上有一个非常方便的类包装QueryPerformanceCounter
,我经常使用它:http://www.codeproject.com/Articles/475/The-CPerfTimer-timer-class
答案 4 :(得分:0)
GetTickCount具有5..15毫秒的精度,因此“零时差”是一个常见问题。
如果您需要精确度,请使用QueryPerformanceCounter。
答案 5 :(得分:-2)
或者您可以尝试使用rtdsc。 详情请见:http://www.mcs.anl.gov/~kazutomo/rdtsc.html 片段:
#include <stdio.h>
#include "rdtsc.h"
int main(int argc, char* argv[])
{
unsigned long long a,b;
a = rdtsc();
b = rdtsc();
printf("%llu\n", b-a);
return 0;
}
甚至chrono都很好,但它需要符合C ++ 11标准(部分)。 详情:std::chrono and cout