• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムの実行時間計測方法について)

プログラム実行時間計測方法について

このQ&Aのポイント
  • プログラム実行時間計測方法について質問します。パケットが受信される度にmessage関数が呼び出され、処理をしていますが、実行時間の計測方法はありますか?
  • clock関数のclock_t型を用いてプログラムの実行時間を計測したいと思っていますが、問題があります。パケットが受信されるたびにmessage関数が呼び出され、かつパケットが受信される度に開始時間がリセットされてしまうのです。
  • 実行時間の計測方法について、対策方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

正直何をしたいのかよく分からないんだが・・・・。 とりあえずいっぱいメッセージを受信して、毎回fpに書き込んでいるその差の時間を取っている事は分かる。 つまり、5回受信したらその5回のfwrite時間を合計したいって事かな? であれば、モジュール(cソースファイル)内に1個変数を作るかstatic変数を作るかで、累積時間を足しこんで行くかして、過去の実績を保存しておく方法が考えられる。 void message(){ double time; clock_t start,finish; static double total = 0; /* static変数を作る */ if(equals(msg->selector,(byte*)"test",strlen("test"))){ start = clock(); fwrite(msg->payload,msg->payload_length,1,fp); finish = clock(); time = (double)(finish - start)/1000.0; printf("データ送信時間:%f[sec]\n",time); /* ひょっとして累計をこっちに出したいのかな? */ total += time; /* 累計に足しこむ */ } else if(equals(msg->selector,(byte*)"finish",strlen("finish"))){ done = D_TRUE; }

bird_2005
質問者

補足

書き込みありがとうございます。 質問の仕方があやふやで、申し訳ありません。 自分が作成したプログラムは、送信側からパケットが来るたびに、受信側のmessage関数が呼び出され、message関数内のfwriteでファイルに書き込んでいます。 今回質問させていただいた内容としまして、受信側の受信開始から終了までの時間(fwriteへの書き込み開始から書き込みが終了するまでの時間)を知りたいと思っています。 しかし、送信側からパケットが来るたびにmessage関数が呼び出されるため、start=clcok()が毎回呼び出されてしまう=0秒のまま、という状態に陥っています。 >printf("データ受信時間:%f[sec]\n",time); /* ひょっとして累計をこっちに出したいのかな? */ はい、そのようにしたいと思っています。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう