0

问题是我的程序太快了,以至于它没有及时检测到变化,或者 GetTickCount(),我怎样才能防止这种情况发生?

谢谢你

4

6 回答 6

0

您是否将运行时间打印为整数?如果您要进行除法以获得经过的时间,请将分子或分母转换为浮点数。

于 2012-11-17T01:43:39.633 回答
0

计算运行时间x并取平均值。

此外,您可以使用分析来获得准确的时间。

于 2012-11-17T01:45:21.473 回答
0

采用

void WINAPI GetSystemTimeAsFileTime(
  _Out_  LPFILETIME lpSystemTimeAsFileTime
);

反而。它有更好的分辨率。在大多数情况下,这确实是需要的。

于 2012-11-17T02:26:40.650 回答
0

CodeProject 上有一个非常方便的类QueryPerformanceCounter,我经常使用它:http: //www.codeproject.com/Articles/475/The-CPerfTimer-timer-class

于 2012-11-17T07:36:03.273 回答
0

GetTickCount 的精度为 5..15 毫秒,因此“零时差”是一个常见问题。

如果您需要精度,请使用QueryPerformanceCounter

于 2012-11-17T08:14:23.733 回答
-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 和 cout

于 2012-11-17T02:11:13.400 回答