timeGetTimeとGetTicCoutは、ともにシステム起動後の時間をミリ秒単位で
測れると言われています。
マルチメディアタイマーというので、5ミリ秒と10ミリ秒の間隔で
イベントを発生させ、両者を比較してみました。
そしたら、両者の結果が違っていました。
どうもGetTicCoutのミリ秒時間の更新は、15ミリ秒程度に1回しか
なされないようです。
5ミリ秒間隔の場合、3回同じ値になり、10ミリ秒間隔の場合、
2回15前後違う値になった後、その次は前と同じになりました。
一方、timeGetTimeの方は、時に1ミリ秒の誤差は出ますが、
指定間隔で変化しました。
この結果からすると、timeGetTimeの方がGetTicCoutより精度が
良いということになりますが、そんなものでしょうか?
それとも、何かの設定を変えれば、GetTicCoutも、精度を上げ
られるのでしょうか?
環境はVB6,XP(Vistaも同じでした)
×GetTicCout
〇GetTickCount
精度と分解能は違います。
GetTickCountはシステムタイマの分解能による制限を受けますので
timeGetTimeより分解能は劣ります。
より高い分解能又はより高い精度が必要な場合は下記のヘルプを参照して下さい。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/_win32_gettickcount.asp
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpmltimd/html/_win32_timegettime.asp
我龍院様、早速のご回答、大変ありがとうございました。
昨日、VBのタイマーコントロールが、どこまで短時間の
タイミングを出せるか試したとき、GetTickCountを使って
時間をカウントしていたら、下限がきれいに15ミリ秒間隔に
なったので、タイマーコントロールの短時間の下限は15
ミリ秒だと思いました。
しかし、timeGetTimeで時間カウントしたら、時間間隔は
ばらばらで、しかし、平均すると、15ミリ秒近いとも
わかりました。
我龍院様の説明と照らし合わせると、合点がいきます。
すっきりとしたご説明、大変ありがとうございます。
何かのときは、またよろしくお願いいたします。
ツイート | ![]() |