処理時間を測りたい。
精度も良ければ良いに越したことは無い。
ということで、そういう時に使えるものでQueryPerformanceFrequencyとQueryPerformanceCounterっていうAPIがある。
QueryPerformanceCounterで取得できるのは「高分解能パフォーマンスカウンタ」の値らしい。
このカウンタは、OSが起動してからせっせとカウントアップをしているみたい。
んで、QueryPerformanceFrequencyは、1秒あたりに、このカウンタがいくつカウントアップするかを教えてくれる。
なので、開始と終了でCounterの値をとって、差を出してFrequencyで割ればかかった時間を秒数で取得できるっていう寸法。
#include
#include
#include
int main(int argc, TCHAR **argv)
{
// wchar_tを表示するため...
std::locale::global(std::locale("japanese"));
LARGE_INTEGER start;
LARGE_INTEGER end;
LARGE_INTEGER freq;
QueryPerformanceCounter(&start);
// 計測したい処理
Sleep(1000);
QueryPerformanceCounter(&end);
QueryPerformanceFrequency(&freq);
// こんな感じで計算する
double time = ((double) end.QuadPart - (double) start.QuadPart) / (double) freq.QuadPart;
std::wcout << _T("かかった時間 = ") << time << _T("sec") << std::endl;
return 0;
}