Devel::NYTProfのインストールから結果表示までmemo

先日勉強会で id:gfx 先生からプロファイラ(性能解析ツール)の紹介があったので忘れないようにメモしておく。

ちなみにプロファイラってなんじゃ?状態だったので調べると

動作中のプログラムがどの処理をどういった順序で実行したかを監視するプログラム。コンパイラやデバッガなどと共に、プログラミング言語の開発環境の一部として提供されることが多い。

例えば、プログラムはまずAという関数を呼び出し、次いでBの計算を実行し…というように、逐一記録が残される。それぞれの処理にかかった時間などを監視できるものもある。

ユーザはこうした記録を分析することで、プログラムが自分の意図通りに動作しているか、またプログラムのどの部分がボトルネックとなって処理に時間がかかっているのか、などを知ることができる。

プログラムの障害を見つけるために用いられるよりも、プログラムの余計な部分を削るなどして高速化するために用いられることが多い。

といった感じで、いろいろ幸せになれるとのこと。



devel::NYTProfのインストールをインストールからですが、

cpanm Devel::NYTProf

のはず。ちょっと前にやったので記憶が確かではないですが。

で、さっそくチェックしたいスクリプトを引数に置いて実行。

perl -d:NYTProf index.cgi

そうすると,nytprof.outというファイルができる。そしたら

nytprofhtml

とすると、mytprofというディレクトリができて、その中に結果が表示されるindex.htmlが作成されました。今回はファイル名をmytprofhtmlのあとに指定してませんが、プロセスごとに結果を出したりするとレポート(nytprof〜ファイルのこと)がでるのでその場合は指定してあげればおkらしい。

で、今回はおまけでわざわざwebサーバーのディレクトリに持っていくのがめんどいので,Plack::App::Directoryを使うとのことでした。
  

cpanm Plack::App::Directory

してインストールしたら、今のnytprofとかがあるディレクトリでいいので

plackup -MPlack::App::Directory -e 'Plack::App::Directory->new({root => "."})->to_app'

すると、なんかwebサーバーっぽい挙動があらわれて、書いてあるがままに

http://(ローカルホスト):5000/nytprof/index.html

とすると、プロファイラのレポートがHTMLで見れた!

そのあとの詳しい見方とか、plackの詳しい動きやらは理解しきれていませんが、ここまでメモということで。

実際のレポート画面や、その後の見方なども学んだ際には追記予定。毎度貴重な勉強の機会をつくってくれる先輩プログラマーの同期に日々感謝