「時間計測」(2011/11/09 (水) 08:47:10) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
時間を取得する関数はいくつかありますが、分解能(精度)などの問題を考えるとtimeGetTime関数を使うのがよいようなので、ここではtimeGetTime関数を用いた時間計測について書きます。
コードは以下のようになります。
timeBeginPeriod(1);
DWORD te,ts;
ts = timeGetTime();
TransparentBlt(hdc2,0,0,bmp1.bmWidth/2,bmp1.bmHeight
te = timeGetTime();
timeEndPeriod(1);
printf("処理時間:%d(ms)\n",te-ts);
timeGetTime関数はシステム時刻をミリ秒で返してくれます(DWORD timeGetTime(void))。
処理終了後のシステム時刻から処理開始前のシステム時刻を引くことで処理時間を計測できます。
通常、タイマの分解能は5ms~10msに設定されており、それより細かい時刻を取得することはできないので、より細かく時間を調べるためにtimeBeginPeriod(1);を呼んでいます。
timeBeginPeriod関数はタイマの分解能を設定する関数です(MMRESULT timeBeginPeriod(int))。
引数には設定するタイマの分解能(ms単位)を渡すので、この場合はタイマの分解能を1msに設定しているということになります。
タイマはほかのアプリケーションでも使用しているため、変更した分解能はtimeEndPeriod関数で元に戻します(MMRESULT timeEndPeriod(int))。
引数はtimeBeginPeriodで設定したのと同じ数を渡します。
表示オプション
横に並べて表示:
変化行の前後のみ表示: