[英]Profiling C++ program
我有一個功能可以分析時間。 實際上,當在主功能中簽13222668
該功能顯示的時間為13222668
微秒(13秒)。 然后,我開始分析功能的不同部分,下面顯示了最小的示例:
#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;
}
如果我在while循環內開始時間,那么它僅顯示827687
微秒(827毫秒),但是如果我在while循環以上開始
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
打印時間(我認為這是打印問題)和match_time += duration;
的總和match_time += duration;
其中顯示了數百萬次運行的時間(827毫秒)。
我想知道我的時間分析方式是否正確,以及為什么時間在while循環和外循環內變化(我懷疑大約在外循環時間)。 我的代碼是否由於其他原因而掛了一段時間。
難道不是您的match_time
未初始化?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.