- 締切済み
プログラムの実行時間
同じプログラムとデータなのに、処理時間がまちまちです。 最初は2秒だったのに、最後は20秒とかめちゃくちゃです。 でも結果はあってます。 プログラムのバグでしょうか? バグでないとすれば何処に原因があるでしょうか? 正確な時間を知りたいとこどの様にすればいいのか教えて下さい。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mainPC
- ベストアンサー率21% (62/287)
clock()関数はCPU時間なので、遅い原因を調べるには適さないかと。。。 どこかで排他制御とかに時間掛かってたりする場合もありますし、何か別の要因の待ち合わせもあるかもしれません。
- mainPC
- ベストアンサー率21% (62/287)
timeコマンドでプログラムのuser/system時間が表示出来ます。 または、sarコマンドでシステム情報を収集している最中にプログラムを動作させておけば、何が原因か推測は可能だと思います。 プログラムの中に時刻表示を入れるのでしたら、gettimeofday()関数がいいと思います。 プログラムの適当な場所に何箇所か入れておいて、プログラムを実行して表示された時刻の差で遅くなっている場所を特定出来ます。 例えばこんな感じに作った関数を、時刻を表示させたい部分で呼べばいいです。 引数は時刻表示される時にどの場所で表示したのか特定させるためです。 ※てけとうに書いたんで、コンパイルエラーが出たら修正して下さいね(^^; #include <sys/time.h> int print_time(char *str) { struct timeval tmp; if (!str) { return(1); } gettimeofday(&tmp, NULL); printf("%s : %u.%08u\n", str, tmp.tv_sec, tmp.tv_usec); return(0); }
- 山田 太郎(@testman199)
- ベストアンサー率17% (438/2463)
この質問で答えられる人はいないと思いますけど まあ、可能性を羅列するって方法もあるけど、 無駄なことを書く可能性も高いので私は御免こうむりたい
補足
あることに気づきました。遅い時はCPUが全く動いていないです。プログラムが実行されてないようです・・・。
補足
既にプログラム内部にclock()を入れて測定しているのですが、それでも実行時間にばらつきがあります。 何が問題なのかわかりません。