プロが教える店舗&オフィスのセキュリティ対策術

Windows API の GetLocalTimeの分解能について質問があります。
この関数は、連続して呼び出しを行うと、ミリ秒の部分が15ミリ秒程度の周期で更新されるという話をネット上で散見します。調査が甘いのか15ミリ秒の根拠が見つかりませんでした。WindowsXPでの検証結果であることが多いようにも感じています。

しかし、私のローカルPC上で同関数をC言語プログラムから実行する限りは、1ミリ秒以下の精度を持っているように思えます。
<ローカルPCのスペック>
OS:windows8-pro
CPU:core-i7

自分でも精度と分解能を勘違いしているのかと思っていたのですが、どうもそれも違うようです。
おおざっぱな質問ではありますが、GetLocalTimeの分解能は私の環境ではどうやって確認できるのでしょうか?
ご教示頂けますと幸いです。

A 回答 (2件)

GetLocalTime()は、直接時計ICやカウンタ等から時刻を取得しているわけではなく、メモリ上の時刻データを返すだけです。


そして、そのメモリ上の時刻データが更新されるのが、大体15mSec毎ということです。
    • good
    • 0

http://d.hatena.ne.jp/kasei_san/20070727/p1

こちらのページによると、1ms単位の数値を返してはいるけど10ms程度の誤差が出るらしい。

この回答への補足

私の記述が不足しておりました。
そのページも既に見ています。

分解能は以下の理解です。
・ある間隔(分解能)で時刻を観測する。
・分解能が15ミリなら、
 2013/01/14 13:41:23.105
2013/01/14 13:41:23.255
 というふうに一桁ミリ秒の意味は無くなります。

精度は表現出来る桁数のことで上記の場合、1ミリ秒になります。


改めて疑問を説明すると、上記の例が
 2013/01/14 13:41:23.105
2013/01/14 13:41:23.105
2013/01/14 13:41:23.105
2013/01/14 13:41:23.106
というふうに、一桁ミリ以下の分解能で1桁ミリ秒の精度の日時を取得しているように見えるのです。

補足日時:2013/01/14 13:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!