プロファイラ gprof の使い方



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」オプションをつけてコンパイルする必要があります。

$ gcc -pg -o test.o test.c

あとは、実行ファイルを普通に実行します。このとき、gprofのデータファイルが同じディレクトリに生成されます。

$ ./test.o

「gprof 実行ファイル データファイル」とすると、解析結果が出力されます。

$ gprof test.o test.o.gmon

参考文献

Debug Hacks -デバッグを極めるテクニック&ツール
Debug Hacks
GNU Make 第3版
GNU Make 第3版

参考URL

Leave a Reply

You must be logged in to post a comment.