如何分析程式的時間消耗

2021-07-23 02:21:52 字數 1015 閱讀 5387

總結一些常用的方法,思考如何分析乙個程式的時間消耗。

1.  trace log

這個是大家最常用,也是最簡單和有效地方法。通常是在函式的開始和結束的位置加入log, 最後通過log記錄時間統計函式的時間消耗。

有時嫌2次log太麻煩,我們可以通過raii進行封裝:

class

ctimecostdebug;

我們在建構函式裡記錄

開始時間,在析構函式裡記錄結束時間以及列印時間消耗。

只要這樣用就好了:

intmain()

return0;

} 這裡時間記錄函式推薦用高精度的queryperformancecounter (曾經嘗試用gettickcount,結果發現誤差超過10ms).

2. windbg的!runaway命令

該命令可以列印每個執行緒的時間消耗:包括使用者模式執行時間,核心模式執行時間以及執行緒建立到現在的總時間。

通過該命令我們可以分析出哪些執行緒在空轉消耗時間,然後進行優化

3. windbg 的 wt 命令

該命令可以幫我們分析目標函式及其子程式執行的指令數,然後幫我們分析該函式的效能消耗分布。

比如我們分析showwindow api 的指令消耗, 我們可以看到內部子函式的呼叫及開銷:

4. vs  profiler

vs  2010之後自帶效能分析工具profiler, 該工具可以幫我們對程式執行的效能進行分析。

5.

intel vtune

我用的是

intel vtune

amplifier xe 2011, 這個工具非常專業,可以在vs2008裡使用,幫我們分析程式的熱點開銷和關鍵呼叫。

總之,根據二八定律,程式執行過程中20%的**消耗了80%的時間, 關鍵的問題是找出這20%**,然後進行優化。不知道大家還有沒有其他好的效能分析方法?

Unix Linux計算程式消耗的時間(毫秒

使用time null 得到的是從1970年1月1日到目前的秒,這種精度很多時候是不夠用的。為了得到毫秒級的精度,需要使用gettimeofday 直接上 include include include include return 1 if the difference is negative,o...

程式理解和時間分析

程式設計之美 第2.20節 程式理解和時間分析 題目如下 閱讀以下c 回答問題 cpp view plain copy using system using system.collections.generic using system.text namespace findthenumber fo...

python程式分析 如何分析Python指令碼?

如chris lawlor所示cprofile是乙個很棒的工具,可以很容易地用於列印到螢幕上 python m cprofile s time mine.py 或提交 python m cprofile o output.file mine.py ps 如果您使用的是ubuntu,請確保安裝pyth...