ということで、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 件のコメント:
コメントを投稿