時間関数の分解能を実測してみた

先日、時間を計測する関数を列挙し、精度を目安として挙げました。
しかし、結局は自分で測ってみたいでしょうからさくっと作成してみました。

ソースはこちら
バイナリでも良い人はこちら

コンパイルにはVisual C++ .NET 2003が必要です。
実行には勇気が必要です。(※運悪いとハングアップする)


結果が以下のようになりました。

  1. QueryPerformanceFrequency(パフォーマンスカウンタ) << 1ms
  2. timeGetTime(マルチメディアタイマ) 約1ms
  3. GetTickCount(標準タイマ) 15ms~16ms
  4. clock ≒ GetSystemTimeAsFileTime(C言語標準) 15ms~16ms

Windows XPではだいたい予想通り(というか噂通り)。
95や98はQueryPerformanceFrequency, SetThreadAffinityMask, SetThreadPriorityなどを削って自分でコンパイルする必要があります。

最初に書きましたが、パフォーマンスカウンタは最強の割り込みなので、こんな乱暴な使い方をするとOSをハングアップさせる可能性があります。ご了承ください。

# 16msって絶対60fpsを意識して設定してます

Leave a Reply

最初のコメントを頂けますか?

更新通知を受け取る »
avatar
wpDiscuz