google perftool を使う

リンクする

これが意外と難しい。

https://code.google.com/p/gperftools/wiki/GooglePerformanceTools

これを読むと、-lprofiler をつけてコンパイルするだけで、あとは環境変数でプロファイリングを行えるようになると書かれている。

しかし、実際にはそうならない。これだけでは何も出力されない。

これは、gcc で "--as-needed" というオプションがデフォルトで有効になっているせいである。以下のようにすると解決する。 http://stackoverflow.com/questions/9577627/ubuntu-11-10-linking-perftools-library

g++ main.o -Wl,--no-as-needed -lprofiler -Wl,--as-needed

実行する

CPUPROFILE=hoge.prof ./hoge

表示する

kcachegrind が最高。 http://nu-pan.hatenablog.com/entry/20140410/1397099300

google-pprof --callgrind hoge hoge.prof > hoge.cg
kcachegrind hoge.cg