質問: プログラムの時間を計りたい!! tcpでのネットワークプログラムをつくりました。 そこでサーバからクライアントまで届くまでの時間を調べたいんですがどうすればよいでしょうか?? 実際にgettimeofday関数をつかったのですが、ミリセカンドまでしかでないようなので失敗しました。 サーバの送った時間 1月17日20時8分20秒877 届いた時間 1月17日20時8分20秒877 となって時間が測れません。 nttcpとかのソフトウェアでもできるみたいなこと書いてたから調べましたがどうもできそうにありません。ってか僕がよくわからない・・・・。 それにできればプログラムの要所要所の時間がしりたいもので。 あと、難しい設定をしてまで正確な時間は知らなくてもいいんです。 gettimeofdayがミリセカンドよりももっと細かい時間(ナノセカンド?)ぐらいまでできるだけでいいんです。 知ってる方おしえてください!!
回答: gettimeofdayでマイクロ秒まで計測してそれを一応信用するなら、あとはサーバとクライアントの時差をどう計測するかです。 ここはやはりntpがもっとも信頼できると思います。ntpの内部動作までは知る必要はなく、両方でntpd(あるいはxntpd)を動かし同じntpサーバに同期させます。安定した状態で両方がそのntpサーバからどれだけずれているかをntpq -pでoffset欄(たぶんミリ秒)で調べ、その差をとれば両者のずれといえます。 ntpサーバに時刻情報を取りに行くとその時点のoffsetに更新されるので、その更新直後を手早く調べないとどんどんずれますので注意が必要です。いつ更新予定かはwhen欄を見ます。ずれの量にあわせてntpdがどんどん時刻を修正していきますので、手早い操作が必要です。それらしい値がいくつもえられるまで何度も繰り返すべきでしょう。 卒論にはそうした時間計測の方法をきちんと記載しないと、信頼性を問われますよ。