問題は、私のプログラムが非常に高速であるため、時間の変化または GetTickCount() を検出できないことです。これを防ぐにはどうすればよいですか?
ありがとうございました
問題は、私のプログラムが非常に高速であるため、時間の変化または GetTickCount() を検出できないことです。これを防ぐにはどうすればよいですか?
ありがとうございました
CodeProject にQueryPerformanceCounter
は、私がよく使用するラップする非常に便利なクラスがあります: http://www.codeproject.com/Articles/475/The-CPerfTimer-timer-class
使用する
void WINAPI GetSystemTimeAsFileTime(
_Out_ LPFILETIME lpSystemTimeAsFileTime
);
代わりは。それはより良い解像度を持っています。ほとんどの場合、これは本当に必要なものです。
実行にかかる時間x
を測定し、平均を取ります。
さらに、正確なタイミングのためにプロファイリングを使用できます。
GetTickCount の精度は 5..15 ミリ秒であるため、「時間差ゼロ」はよくある問題です。
精度が必要な場合は、QueryPerformanceCounterを使用してください。
実行時間を整数として出力していますか? 経過時間を取得するために除算を行う場合は、分子または分母を float としてキャストします。
または、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