總結一些常用的方法,思考如何分析乙個程式的時間消耗。
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...