簡體   English   中英

分析C ++程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM