アメリエフの技術ブログ

Amelieff Staff Blog

Perl プログラムの性能解析(NYTProf)

こんにちは。detです。

少々複雑なPerlプログラムを組んだ時に、
どの部分にどれだけ時間がかかっているか、
知りたいことがあると思います。

そんな時は、プログラムの各処理ごとに時間や実行回数などを計測し、
出力してくれるプロファイラを使うと便利です。

いくつか種類がありますが、今回はソースコードを見ながら、
html形式のGUIでプロファイル結果が確認できるDevel::NYTProfという
Perlプロファイラを簡単にご紹介いたします。

まず、CPANから、Devel-NYTProf-4.06.tar.gz をダウンロードします。
http://search.cpan.org/~timb/Devel-NYTProf-4.06/lib/Devel/NYTProf.pm

次は、READMEの指示通りに、

$ perl Makefile.PL
$ make
$ make test
$ make install


として、インストールします。

インストールできれば、あとは簡単です。
hoge.plのプロファイリングをしたい時は、以下のように実行します。

$ perl -d:NYTProf hoge.pl
$ nytprofhtml

とすれば、nytprof/index.html ができるので、
そのhtmlをウェブブラウザで開くと、以下のようになります。



それぞれどのサブルーチンが何回呼ばれて、
どのくらい時間がかかっているかが表示されます。
さらにそのサブルーチンをクリックすると、以下のように、
ソースコードを見ながら確認ができます。



かなり見やすいので、うまく使えば、
かなり便利なのではないでしょうか?

ちなみに、NYTProfのNYTはアメリカの有名な新聞社、
NewYorkTimes社のことです。社内のエンジニアの方が、
このプロファイラを作成したとか。
新聞社からこういうものが産まれてくるのが面白いですね。

それでは、detでした。