0
時間をプロファイルする関数が1つあります。実際には、メイン機能でチェックされたときに、13222668
マイクロ秒(13秒)の時間が表示されます。私は、最小限の例が以下に示され、機能の異なる部分をプロファイルし始め:C++プログラムのプロファイリング
#include <iostream>
#include <sstream>
#include <string>
#include <chrono>
using namespace std::chrono;
unsigned int match_time;
int func(){
unsigned int i = 0;
while(i < 20){
high_resolution_clock::time_point t1 = high_resolution_clock::now(); // if I start the time from here, it shows me just `827687` milliseconds (827 milliseconds).
//code....
{
//code...
{
//code....
}
//code....
}
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(t2 - t1).count();
match_time += duration;
i++;
}
return 0;
}
Iは、whileループ内の時間を開始した場合、それだけ827687
マイクロ秒(827ミリ秒)を示し、私はしばらくの上に起動した場合ループ
high_resolution_clock::time_point t1 = high_resolution_clock::now();
while(i < 20){
}
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(t2 - t1).count();
match_time += duration;
は私が高い時に私が疑う13222668
マイクロ秒(13秒)、得ました。私は別の文の実行のための時間を確認するとき
はまた、私は(私は印刷の問題だと思います)を印刷0
時間とどのショー(827ミリ秒)の実行の何百万もの間に合計match_time += duration;
を取得します。
時間プロファイリングの方法が正しいかどうか、whileループと外側ループの時間が変わる理由を知りたいと思います。他の理由により私のコードはしばらくぶら下がっていますか?
[this](http://stackoverflow.com/q/42457605/841108)は、関連する質問です。 –
@BasileStarynkevitchありがとうございます。しかし、なぜ時間が変化するのかを知る必要があります。whileループの外で時間を使うと、コードがしばらく保持されていることが明らかです。 –
ベンチマークを数回繰り返します。実行時間は再現できません(多くのキャッシュのため) –