README
March 30, 2009 · View on GitHub
=head1 概要
本プロジェクトでは、Perl programming における、パフォーマンスチューニングの要諦について書く。
=head2 チューニングの原則
可読性/メンテナンス性とのトレードオフを意識し、メンテナンス性の低下をひきおこすようなチューニングは気をつけておこなうこと。
=head2 無根拠なチューニングはしない
マイクロオプティマイゼーションにおいて、ベンチマーク結果のみにたよったチューニングはできるだけ避け、「どうしてこちらの方が高速なのか」を常に意識するよう心がけるべきである。
=head2 ツール
=over 4
=item Benchmark.pm
Benchmark.pm は、Perl における標準のベンチマークモジュールである。cmpthese, timethese, timeit などを場合によって使いわけるようにする。本稿でも主にこれを用いる。
=item B::Terse/B::Concise
これらのモジュールをつかうと、Perl の op tree のダンプをみることができる。これをよくみることにより、「なぜこれが速くなるのか」ということが理解可能となる。
=item Devel::NYTProf
Perl5 のプロファイラはながらく Devel::DProf が標準的につかわれてきましたが、最近は Devel::NYTProf が主流となっています。Devel::NYTProf は、綺麗な HTML を生成することができ、ホットスポットがひとめでわかるので、オススメです。
最適化の基本はプロファイラなのであって、イチにもニにもプロファイラです。まずはとにかくプロファイラにかけてください。その上で考えましょう。
ホットスポットがどこなのかわからなければ、高速化はできないのです。
=back
=head2 環境
perl5 は日々開発がつづけられていますので、今日有効だったテクニックが明日は無駄になるかもしれません。
本稿では現在での最新安定版である perl5.10 を debian gnu/linux lenny 上でベンチマークをとっています。
=cut