在linux下如何找出C程式中loop較多的區段 - Linux

Table of Contents

※ 引述《BoxsterX ()》之銘言:
: 由於要做平行程式
: 要先找出重複較多的區段再下手處理
: 請問有甚麼方法能達到這個目標

平行程式的重點在於找出執行時間(CPU time)最久的地方最佳化

不一定是重複最多的次的區段

至於要找出這些地方的工具叫做 profiler

我自己比較常用的 Intel VTune

(Linux 非商業版是免費的,可以到 http://goo.gl/cevLw 取得)

直接跑編譯過的程式就可以分析 hotspot 了

如果編譯的時候有加 -g 的話,可以直接看到哪一行跑最久,非常方便。

如果是 Intel 的 CPU 的話,更可以直接讀硬體的 event counter,

可以用來測量 L1, L2 cache miss 等等

操作方法很簡單,看著官方的 Getting start guide 就可以了

另外兩套也值得推薦的是 GNU profile (gprof) 以及 Google Profermance tool (pprof)

只是使用這兩套時都需要額外編譯程式

網路上也有相當多的資料~


以上是我的小小心得 :P 剩下請版上各位補充~

--

All Comments

Olive avatarOlive2011-04-25
感謝提供資訊~
Eden avatarEden2011-04-29
看起來很好用!
Daph Bay avatarDaph Bay2011-05-03
大感謝!
Jake avatarJake2011-05-06
專業推!!
Todd Johnson avatarTodd Johnson2011-05-11
但在VTune在windows下真是有夠難用。。
Tom avatarTom2011-05-14
太專業了!