Learning Perl, Fifth Edition

2008.06.29  |  Perl, 書籍  |  Comments (0)

「リャマ本」こと「Learning Perl」(日本版のタイトルは「初めてのPerl」)の第5版が出たみたいです。英語版の第4版買うか、日本語版の第3版買うかで迷っていたところなのでちょっとうれしい。Perl 5.10にも対応ってことらしいです。

これの日本語版は出ないのでしょうか? できればそっちの方が読みやすいんですが…

CGI.pmは重い

2008.06.08  |  Perl, ウェブ制作  |  Comments (3)

今更な話なのですが、いつもお世話になっているCGI.pmには、ものすごくたくさんの機能があることを最近初めて知りました。いつも、単に「フォームから渡されたパラメータを取得すること」にしか使っていなかったんですが、そのためだけのモジュールではないんですね…(ホント今更な話ですみません(笑))

それとは別に、最近初めて知ったものに、mod_perlやSpeedyCGIというのがあります。通常、Perlで書かれたCGIは、呼び出される度にコンパイルされて、そして実行されるんですが、mod_perlやSpeedyCGIは、一度コンパイルしたプログラムをそのまま残しておいて、次回以降のコンパイルプロセスを省くことにより、CGIの動作を高速化することができます。場合によっては数十倍も速くなるらしく、それはそれでかなりすごいのですが、そもそも実際のプログラムの実行ではなく、コンパイル時のコストがこんなに大きいってのが驚きです。

話し戻ってCGI.pmです。先ほども書いたように、大したことに使ってないのに、この巨大なモジュールを毎回コンパイルしているのは、かなり無駄が大きそうです。そこで試しに、このCGIをCGI.pmを使わないように書き直して、ab(Apache Bench)でベンチをとってみたら、なんと約4倍も速くなりました。おそらくこれはかなりレアなケースだと思いますが、大変な違いですね。「車輪の再発明」は良くないかもしれませんが、車輪一つが必要な時に10tトラック持って来るのも品がありません(この例えも品がないけど(笑))。

CGI.pmの軽量版モジュールにCGI::Minimalっていうのもあります。

CGI::Minimal – A lightweight CGI form processing package – search.cpan.org
http://search.cpan.org/dist/CGI-Minimal/lib/CGI/Minimal.pod

ベンチが載っているので引用します。

CGI.pm (3.05) via standard CGI - 16 fetches per second CGI::Simple (0.075) via standard CGI - 20 fetches per second CGI::Deurl (1.08) via standard CGI - 36 fetches per second CGI::Thin (0.52) via standard CGI - 38 fetches per second CGI::Lite (2.02) via standard CGI - 52 fetches per second CGI::Minimal (1.16, :preload) via standard CGI - 52 fetches per second CGI::Minimal (1.16) via standard CGI - 66 fetches per second cgi-lib.pl (2.18) via standard CGI - 71 fetches per second null Perl script via standard CGI - 103 fetches per second null C program via standard CGI - 174 fetches per second CGI::Simple (0.075) via mod_perl - 381 fetches per second CGI.pm (3.05) via mod_perl - 386 fetches per second CGI::Minimal (1.16) via mod_perl - 417 fetches per second null Perl script via mod_perl - 500 fetches per second

なかなか良さそうですが、このサイトが使っているさくらのサーバには入っていませんでした。ちょっと残念…

[追記 2011/10/19]
さくらのスタンダードなら、自分でインストールすることはできると思います。