gprof GNU Profiler とは
プロファイラあるプログラム中で使用される関数毎に、その実行回数や実行時間を分析して表示するツールです。プログラムが思ったようなパフォーマンスが出ない場合、ボトルネックになっている場所を特定するために利用します。
実行例
% cumulative self self total time seconds seconds calls ms/call ms/call name 0.0 0.00 0.00 3 0.00 0.00 read [1] //read()が3回 0.0 0.00 0.00 2 0.00 0.00 write [2] //write()が2回 呼ばれている 0.0 0.00 0.00 1 0.00 0.00 ___sysctl [138] 0.0 0.00 0.00 1 0.00 0.00 _close [139] 0.0 0.00 0.00 1 0.00 0.00 _mcleanup (140) 0.0 0.00 0.00 1 0.00 0.00 _profil [141] 0.0 0.00 0.00 1 0.00 0.00 moncontrol [3] 0.0 0.00 0.00 1 0.00 0.00 open [4] 0.0 0.00 0.00 1 0.00 0.00 sysctl [5]
それぞれ、
- 実行時間(全体に対する %)
- 実行時間の累積(秒)
- 実行時間(秒)
- 関数の実行された回数
- 1回の関数実行にかかる時間(ミリ秒)
- 1回の関数実行にかかる時間の合計(ミリ秒)
- 関数名
を表しています。
使い方
gprofを使うには「-pg」オプションをつけてコンパイルする必要があります。
あとは、実行ファイルを普通に実行します。このとき、gprofのデータファイルが同じディレクトリに生成されます。
「gprof 実行ファイル データファイル」とすると、解析結果が出力されます。
参考文献
![]() Debug Hacks |
![]() GNU Make 第3版 |
参考URL
- Man Page OF GPROF
http://www.linux.or.jp/JM/html/GNU_binutils/man1/gprof.1.html - プロファイリング(実行速度分析)
http://adlib.rsch.tuis.ac.jp/~akira/lect/softa/profiling.html























