そこで、GetLoaclTimeを使用したところ計測している時間が同じ
になってしまいました。
例えば、3回連続で送信した場合の1送信ごとの時間を計測した
ところ、秒どころか、msまで同じになってしまいました。
時間による計測をするうえで、もっと制度のよい現在時刻を取得
できる方法はないのでしょうか?
「精度」が高いのはマルチメディアタイマ(timeGetTime)や
高分解能パフォーマンスタイマー(QueryPerformanceCounter)です。
多少精度が低くてもよい場合はGetTickCount関数が手軽です。
高分解能パフォーマンスタイマーはハードウェアに依存するようです。
マルチメディアタイマについてはよくわかりません^^)
GetTickCount関数やtimeGetTime関数ではWindows起動時からの
経過時間をミリ秒単位で取得できます。DWORD値なので約49.7日間で
0に戻ります。
送信時のカウントを保存しておき、受信時のカウントとの差を求めることで、
遅延時間をミリ秒単位で計測できます。
GetTickCount関数の精度はシステムタイマに依存します。
Windows NT 3.5 and later: The system timer runs at approximately 10ms.
Windows NT 3.1: The system timer runs at approximately 16ms.
Windows 95/98: The system timer runs at approximately 55ms.
ローカル日時(GetLocalTime関数)の精度は1秒かも。
いずれにしろ、Windowsのマルチスレッドの環境では、タイマの精度が
低いことを前提にプログラムを設計したほうがよろしいかと。
--
植田システム設計事務所 植田真一
usde...@par.odn.ne.jp
> いつもお世話になっております。
> 現在、ms単位による送信・受信の遅延を計測しよう
> と思っています。
きりのいい単位ではありません。約マイクロ秒単位。
QueryPerformanceCounter
QueryPerofrmanceFrequency
使ったことはありませんが、NTなら
GetProcessTimes
GetThreadTimes
---> よく考えたら、プロセスの消費時間であり、絶対時間ではな
いですね。ボツ。
装置が調達できるなら
伝送路をロジックアナライザで見るのが一番確実。
----+----1----+----2----+----3----+----4----+----5
青木 GZL0...@nifty.ne.jp
Performance Programming (2000-6)
http://homepage1.nifty.com/aok2/
と、余談はここまでとして。
どちらにしてもms単位の制度を求める場合、
> QueryPerformanceCounter
> QueryPerofrmanceFrequency
か、timeGetTime等の関数を使用しなければならないということですね。
現在使用しているPCはPⅢ450MHzなんでμsの時間がとれると嬉しいで
す。(精度がよければ良いでOKです)
もうちょっと頑張ってみます。
"aok" <gzl0...@microsoft.com> wrote in message
news:eqgn$4D2$GA....@cppssbbsa02.microsoft.com...