2012-02-24 80 views
0

我擁有從C++生成的程序的.exe文件。測量程序花費的時間

是否有一些簡單的片段,我可以插入以獲取該程序所花費的時間。我有C++代碼可用,但我不想調整太多。

+0

http://stackoverflow.com/questions/673523/how-to-measure-execution-time-of-command-in-windows-command-line提供了幾種解決方案。 – timrau 2012-02-24 07:22:23

回答

2

閱讀關於Boost.Timers。代碼示例測量時間爲:

#include <boost/timer/timer.hpp> 

boost::timer t0; 
// do smth 
std::cout<<"elapsed: "<< t0.elapsed() << " s\n"; 
0

一個簡單的方法來衡量你的程序的某些部分(或全部)所花費的時間是走的當前時間的快照開始,然後從減去它當前時間結束。在Windows上,您可以使用GetTickCount函數。我在一個小幫手結構通常把這個包:

struct Duration { 
    Duration(const char *name) 
    : m_start(::GetTickCount()), 
    m_name(name) 
{ } 

    ~Duration() { 
    std::cout << m_name << " executed in " << ::GetTickCount() - start << "ms" << std::endl; 
    } 

    const DWORD m_start; 
    const std::string m_name; 
}; 

您可以使用它像這樣:

int main() 
{ 
    Duration d("Program"); 

    // Heavy work being done here 
} 

小的定時信息打印到stdoutDuration對象被銷燬。

+1

對於一個學術代碼也許可以,但在析構函數中添加輸出語句是非常糟糕的做法,更不用說應用程序/計算邏輯了。 – Neowizard 2012-02-24 07:32:27

+0

@Newizard:絕對同意。但是,如果您只是想知道代碼的某些部分需要執行多長時間(如果引入自定義範圍來限制對象的生命週期,則可以使用此'Duration'類很好地),您不希望有一個很好的解耦,模塊化,基於依賴注入的概要分析框架。你只是想在你調試的時候做一些小工作 - 不管怎樣,它都不會在最後提交。 – 2012-02-24 08:18:23

+0

我同意。這是一個很簡單的方法來做一些與運行時相關的測試/調試。只是想指出這不是一個好的製作理念 – Neowizard 2012-02-28 12:15:38

0

在unix上,你只需要在可執行文件的前面添加「time」前綴,如果偶然有安裝Cygwin,那麼這就是我的建議。否則,請檢查Performance Counters,這是MS平臺上過程性能數據的來源。在應用程序退出之前,應該可以用一個額外的方法調用來解決這個問題。

相關問題