###前提・実現したいこと
現在、Linux上でgccを使ってソースコードをコンパイルしています。clock_gettime()を使ってソースコード内の各処理の時間を計測しているのですが、上手くいきません。
実現したいことは、for文内にある各クラスのインスタンスのメンバ関数の実行時間を、実行する度に計測し、ファイルに吐き出します。後に、吐き出したデータをエクセルで集計し、どこでどれだけ時間が掛かっているかを知りたいです。
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
C++
1ここにご自身が実行したソースコードを書いてください
const static uint32_t NANO2SEC = 1000000000;
main()
{
uint64_t time;
struct timespec start, end;
int ERROR=0;
int ii;
for(ii=0; ii<1000000; ii++){ clock_gettime(CLOCK_MONOTONIC, &start); hoge->Exec(); ERROR = clock_gettime(CLOCK_MONOTONIC, &end); if(ERROR==0){ if((end.tv_nsec - start.tv_nsec) < 0){ end.tv_nsec += NANO2SEC; end.tv_sec -= 1; } time = end.tv_nsec - start.tv_nsec; time += end.tv_sec - start.tv_sec; }else{ time = 0; } ofs << time << endl;
以下、同じ様にそれぞれのメンバ関数の実行時間を計測して行く。
}
###試したこと
課題に対してアプローチしたことを記載してください
各クラスのメンバ関数の実行を回しているfor文の中で、ある一つのメンバ関数以外をコメントアウトして実行時間を計測した場合と、コメントアウトを外して全てのメンバ関数を実行して計測したのですが、実行時間が異なっていました。
何故、2つの場合で異なるのかを教えていただきたいです。
###補足情報(言語/FW/ツール等のバージョンなど)
追記2016/12/27/20:30
早速の回答ありがとうございます。
情報不足でした。2つのソースコードが有りまして、それぞれのソースコードでは、同じクラスのメンバ関数を実行している箇所があります。
なので、その2つのソースコードないで同じ様に時間を計測すれば、その箇所だけで見れば似た様な計測結果となるはずなのです。
しかし、実際に測ってみると3分程の差がありました。
なので、自分のclock_gettime()の使い方が間違っているのかと思っております。
以上、よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー