2014年4月16日水曜日

DirectFBのサンプルをgprofでプロファイリングしてみる

i.MX6搭載のUDOOにDirectFBとExamplesをインストールしてみたんですが、df_andi(ペンギンいっぱい出るサンプル)を動かしてみると、標準のペンギン200体で20fpsしか出てない。RPiでやったときももうちょっと出てたと思うのに、上位CPUを搭載したUDOOがこんなに遅いわけがない!

ということで、GNU gprof使ってちょいとプロファイルしてみる。

df_andiのソースだけ取り出してgprof向けコンパイルできればいいんですが、依存関係とかややこしいので、CFLAGSだけいじってautotoolsで全部ビルドしちゃう。

$ cd build_dfbexamples
$ make clean
$ CFLAGS=-pg ../DirectFB-examples-1.7.0/configure
$ make

で、実行してみる。

$ sudo src/df_andi &

強制終了するとgprofの結果ファイルgmon.outが生成されないので、pkillは使わない。面倒ですが、USBキーボードを繋いでESCを押します。
gmon.outが生成されたら、gprofでプロファイル結果を表示してみる。

$ gprof src/df_andi gmon.out
Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  Ts/call  Ts/call  name
100.12      0.01     0.01                             draw_penguins

draw_penguinsが100%超えてますやん笑

df_andi.cの中のこの関数の実装を見てみると、確かに二重ループになってたり、DirectFBのライブラリ関数をコールしてたり、確かに重そうではある。もうちょっと詳しく見てみる必要がありそう。。


参考
Re: using gprof with autotools - Ubuntu Forums

0 件のコメント:

コメントを投稿