Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tokuhirom/optimize-perl-doc

how to optimize your perl code?
https://github.com/tokuhirom/optimize-perl-doc

Last synced: 18 days ago
JSON representation

how to optimize your perl code?

Awesome Lists containing this project

README

        

=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