gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

Devel::NYTProfのプロファイラーを試しみた

3,4ヶ月前にPerlで200行ぐらいのコードを書いた。「Perlを最適化する

」サイトを参考にコードの最適化とスレッド化をして実行時間を短縮した。けれども、プロファイラーを使用してどこに時間がかかっているのか、知りたくなった。

 

 先ず、Devel::FastProfというプロファイラーをインストール使用しようとしたが、失敗。cpanの公式サイトを見ると、BUGSの見出しの下にNo Windows! No threadsとあるので、Window版ではインストールできないようだ。半日かかった。orz

 

 次に他のプロファイラに替わり、デファクトスタンドとなったDevel::NYTProfというNew York Timesの有志で作られたモジュールをインストール。

実行は、

perl.exe -d:NYTProf xxxxx.pl

 

実行結果は、オプションで指定しなければカレントフォルダにnytprof.outが作成される。これはDBファイルなので、そのまま見ることができず、

nytprofhtmlコマンドか、nyprofcsvコマンドを実行することによって、htmlファイルまたはcsvファイルが作成される。

どちらのコマンドも、カレントフォルダにnytprofというフォルダ内にモジュール単位にファイルが作成される。

フォルダ内にindex.htmlをブラウザで開くと、トップにグラフとその次にTop15のサブルーチン名称とコール回数や経過時間等が表形式で表示される。

 最下段には、ソースファイル毎に経過時間とさらにそのソースファイルのリンクが表示される。

リンクをクリックすると、ここでも、サブルーチンごとの経過時間の表が上にあり、下段には、ソースコードの1行毎経過時間が表示される。

 

これは、すごい!!

 

p.s.

参照サイトの一番下段は、Devel::NYTProfの作成者が書いたこのプロファイラの紹介と最適化の方法が書かれています。

 

参照サイト:

Perlを最適化する

Perl スクリプトで遅い場所を特定する方法 - Devel::Profiler / Devel::NYTProf - drk7jp

Devel::FastProf - "fast" perl per-line profiler - metacpan.org

Devel::NYTProf - Powerful feature-rich perl source code profiler - metacpan.org

http://assets.en.oreilly.com/1/event/45/Understanding%20and%20Optimizing%20your%20Code%20with%20Devel__NYTProf%20Presentation.pdf