timeGetTime() の精度を上げてみる

最終更新 2003 10/15

サンプルのダウンロード → API_timeBeginPeriod.lzh(43k)

サンプルプログラムのスクリーンショット

サンプルソースコード
前回のソースから変更部分だけを抜粋します

timeBeginPeriod(1);               //最小精度を設定
long startTime = timeGetTime();   //開始時間取得
RenderFrame();                    //画面に絵を描いたり色々する
long endTime = timeGetTime();     //終了時間取得
timeEndPeriod(1);                 //設定を解除

g_passTime = endTime - startTime; //終了時間−開始時間でかかった時間を計測
if( g_passTime < 0 ) g_passTime = 0;
g_timeCount += g_passTime;        //かかった時間を足す



timeBeginPeriod 関数
timeEndPeriod 関数
	
	対応しているバージョン
	95, 98, Me, NT3.1以降, 2000, XP
		
	使用するヘッダとライブラリ
	mmsystem.h
	winmm.lib
ウィンドウズのバージョンにもよりますが、初期状態で timeGetTime() で 計測できる最小精度は1ミリ秒〜10ミリ秒です。 そのため、どんなに速い処理を行っても timeGetTime() に設定された 最小精度より少ない時間は計測できません。 この最小精度は timeBeginPeriod() で変更することができます。 ウィンドウズ2000(多分、XPも)では1ミリ秒の精度で計測できる ようです。 マシンのスペックにもよるのでしょうか・・・。 timeBeginPeriod() で精度を変更したら timeEndPeriod() で設定を 解除します。 timeBeginPeriod() を仕掛ける場所と、timeEndPeriod() で設定を 解除する場所はサンプルを参考にして下さい。 timeEndPeriod() の引数には timeBeginPeriod() に指定した引数と 同じ値を指定します。

| next | back | home |