C ++经过的时间是0

时间:2012-11-17 01:41:30

标签: c++ performance winapi time rendering

问题是我的程序太快以至于无法及时检测到变化,或GetTickCount(),我该如何防止这种情况发生?

谢谢

6 个答案:

答案 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