プログラムの最適化を行なうときには、 処理時間の大きい関数を集中的に最適化すると効果が大きい。 そのためにはまず関数ごとの実行頻度や実行時間などといった、 プログラムの振舞いを測定する必要がある。 プロファイラは そのためのツールである。
コンパイルとリンク時に-pg
オプションをつける。
gcc -pg -o test test.c
makefileを利用する時には、リンク時のオプションを付け忘れることが多いので注意。
( -pg
を付けて作成した)プログラムを普通に実行する。
プログラムが正常終了すると、
カレントディレクトリに gmon.out というファイルが生成されている。
(Ctrl-Cで止めたり、Segmentation Faultで異常終了した時には
gmon.out は生成されないので、注意しよう。)
./test ls -F gmon.out test test.c
「gprof 実行ファイル名 gmon.out」とすると、 解析結果が標準出力に表示される。
gprof ./test gmon.out
出力される分量が多いので、リダイレクションなどでファイルに保存すると良い。
gprof ./test gmon.out > gmon.log less gmon.log