0

問題は、私のプログラムが非常に高速であるため、時間の変化または GetTickCount() を検出できないことです。これを防ぐにはどうすればよいですか?

ありがとうございました

4

6 に答える 6

0

CodeProject にQueryPerformanceCounterは、私がよく使用するラップする非常に便利なクラスがあります: http://www.codeproject.com/Articles/475/The-CPerfTimer-timer-class

于 2012-11-17T07:36:03.273 に答える
0

使用する

void WINAPI GetSystemTimeAsFileTime(
  _Out_  LPFILETIME lpSystemTimeAsFileTime
);

代わりは。それはより良い解像度を持っています。ほとんどの場合、これは本当に必要なものです。

于 2012-11-17T02:26:40.650 に答える
0

実行にかかる時間xを測定し、平均を取ります。

さらに、正確なタイミングのためにプロファイリングを使用できます。

于 2012-11-17T01:45:21.473 に答える
0

GetTickCount の精度は 5..15 ミリ秒であるため、「時間差ゼロ」はよくある問題です。

精度が必要な場合は、QueryPerformanceCounterを使用してください。

于 2012-11-17T08:14:23.733 に答える
0

実行時間を整数として出力していますか? 経過時間を取得するために除算を行う場合は、分子または分母を float としてキャストします。

于 2012-11-17T01:43:39.633 に答える
-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 に答える