gettimeofdayを使ったプログラムスピードの測定について。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
いちこ
記事: 62
登録日時: 13年前
連絡を取る:

gettimeofdayを使ったプログラムスピードの測定について。

#1

投稿記事 by いちこ » 12年前

宜しくお願いします。

コード:

double get_dtime(void)
 {
 struct timeval tv;
 gettimeofday(&tv, NULL);
 //ミリ秒を計算
return ((double)(tv.tv_sec)*1000 + (double)(tv.tv_usec)*0.001); //★
 }

プログラムスピードを計る際、↑のような関数を作成して使用するとよいと調べたのですが、★の行で何をしているのかわかりません。
tv_secは秒、tv_usecはマイクロ秒だと思うのですが、なぜこのような計算をして、ミリ秒が返るのでしょうか…。
特に、足し算の部分で何をしているのかわかりません。

調べてもわからなかったので、どなたか詳しい方がおられましたら、解説をしていただけるとうれしいです。

box
記事: 2002
登録日時: 15年前

Re: gettimeofdayを使ったプログラムスピードの測定について。

#2

投稿記事 by box » 12年前

いちこ さんが書きました:

コード:

 //ミリ秒を計算
return ((double)(tv.tv_sec)*1000 + (double)(tv.tv_usec)*0.001); //★

プログラムスピードを計る際、↑のような関数を作成して使用するとよいと調べたのですが、★の行で何をしているのかわかりません。
tv_secは秒、tv_usecはマイクロ秒だと思うのですが、なぜこのような計算をして、ミリ秒が返るのでしょうか…。
特に、足し算の部分で何をしているのかわかりません。
tv_sec:秒単位の値→1秒は1000ミリ秒なので、ミリ秒に変換するには1000倍する必要あり
tv_usec:マイクロ秒単位の値→1マイクロ秒は1/1000ミリ秒なので、ミリ秒に変換するには1000で割る必要あり
両者を合算すれば、ミリ秒の値がわかる。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

いちこ
記事: 62
登録日時: 13年前
連絡を取る:

Re: gettimeofdayを使ったプログラムスピードの測定について。

#3

投稿記事 by いちこ » 12年前

>>boxさん
返信ありがとうございます。
成程です…!
私は二つを足すと、時刻の値が2倍になってしまうと思っていたのですが、勘違いをしていたようです。
マイクロ秒は、紀元からの経過時間のマイクロ秒でなく、秒と秒の間のマイクロ秒なんですね。


閉鎖

“C言語何でも質問掲示板” へ戻る