0

timeGetTime関数のドキュメントには次のように書かれています。

timeGetTime 関数のデフォルトの精度は、マシンによっては 5 ミリ秒以上になる場合があります。timeBeginPeriod および timeEndPeriod 関数を使用して、timeGetTime の精度を上げることができます。

したがって、精度はシステムに依存します。しかし、精度を上げたくない場合は、現在のシステムでそれが何であるかを知りたいだけです。それを取得するための標準的な方法 (API など) はありますか? それともtimeGetTime、しばらくポーリングして、出てくるものを見て、そこから推測する必要がありますか?

4

1 に答える 1

1

GetSystemTimeAsFileTime 関数を使用することをお勧めします。この関数はオーバーヘッドが少なく、システム クロックを表示します。この回答を参照して、時間の粒度と、タイマーの解決を照会するための API に関する詳細を取得してください (例: NtQueryTimerResolution)。システムファイルの時間がどのように増加するかを調べるコードもそこにあります。 より正確であるはずの新しいGetSystemTimePreciseAsFileTime 関数Windows 8を提供します。可能な限り最高レベルの精度 (<1us) のMSDN ステートServer 2012. ただし、これは W8 および Server 2012 でのみ機能し、この追加の精度がどのように得られるかについてのドキュメントはほとんどありません。MS は Linux に似た (gettimeofday) 方法で、パフォーマンス カウンターの周波数とシステム クロックを組み合わせようとしているようです。 この投稿はあなたにとっても興味深いかもしれません。

編集: 2014 年 2 月の時点で、MSDN には時間の問題に関するより詳細な情報があります: Acquiring high resolution time stamps

于 2013-03-28T08:50:32.333 に答える