CPU負荷を測るツール、gprofを試したので、簡単にメモ。

gprofでプログラムの性能をしらべる

プログラムの性能情報を知ることができる(プロファイリングできる)ツール。
実行ファイルから、以下の情報を得ることができる。

  • 実行時間

    • 単位時間内に関数の呼ばれた回数
    どの処理に時間がかかっているのかを、感覚的にではなくて数値情報として得ることができる。CPUに負荷がかかりすぎると組み込みソフトでは異常終了してしまう。このツールが利用することで、時間がかかっているポトルネックを発見できて、処理速度を最適化できる(らいし・・・試してないので)。

使い方

gprofはgccとともについてくるツールなので、とくにダウンロードは不要。
which gprofで見つかった。

ブロファイラ情報を得るには、ビルドするときに、以下のコンパイルオプションをつける。

-pg

MakefileだとCFLAGSに追加すればよい。

CFLAGS += 窶菟g

実行バイナリを実行すると、カレントフォルダにgmon.outというファイルができる。
このgmon.outに解析情報がはいっている。

解析結果を取り出すには、以下のコマンドを叩く。

gprof (実行ファイル).exe gmon.out

(実行ファイルはオブジェクトファイル(hogehoge.o)でもいい)

%   cumulative   self         self     total
time   seconds   seconds    calls      Ts/call  Ts/call  name
0.00      0.00     0.00       1001     0.00     0.00  buffer_over_run
0.00      0.00     0.00        1         0.00     0.00  buffer_over_run2

for文を1000回回してみたらこんな感じ。

その他メモ

Eclipseからgprofの解析結果を表示できるらしい。
試してみたが動かず。 どうやらCygwinは未対応?

https://wiki.eclipse.org/Linux_Tools_Project/GProf/User_Guide