braintag

公開してしまう備忘録

最適化の近道 プロファイラgprofのコールグラフを画像化して、コードのどこがボトルネックかをわかりやすくする

boostを多用して富豪的プログラミングしまくってたらさすがに遅すぎて、プロファイラで解析しようと
思ったのですが、boost使ってるとgprofの出力解読が困難なので、コールグラフを視覚化できないものかなと思ったら良いツールがあったので使ってみました。

参考
gprofでコールグラフ - 三次元日誌
http://d.hatena.ne.jp/ousttrue/20091017/1255754733


配布サイト
https://code.google.com/p/jrfonseca/wiki/Gprof2Dot


以下はUbuntu13.04での話です。

まずは必要なモジュールのインストール

sudo apt-get install python graphviz

次に、scriptを以下からwget

wget http://gprof2dot.jrfonseca.googlecode.com/git/gprof2dot.py
sudo chmod 755 gprof2dot.py

gprof用にMakefileに以下を追加

LDFLAGS = -pg -fno-omit-frame-pointer
LOADLIBES = -pg

一回実行して、gmon.outを出力させる

sudo ./a.out

その後、gprofの出力をパイプでつなぎます。

gprof ./a.out | ./gprof2dot.py | dot -Tpng -o output.png

f:id:kiwamaru:20130528175934p:plain

ボトルネックが一目瞭然!