CGI Applicationが遅くなる原因にはテンプレートもあるんじゃないか

概要: CGI Applicationが遅くなる原因とは何か。


CGI というシーンにおける現状の Perl のウェブアプリケーションフレームワークの問題点とは 都度 perl のインタープリタインスタンスを起動するのでモジュールの読みこみ/コンパイルコストを無視できない bless の速度を無視できない といったあたりであると認識している。

という部分に触発されて書いてるんですけど、CGI Applicationが遅くなるのは、モジュールやblessの速度もそうですが、

テンプレートを処理する速度 にもよるんじゃないかと思うんですよね。

コンパイルの遅いモジュール(Mooseとか)を使ってれば遅くなるのは当然ことなんですが、

テンプレートを処理する速度 も _ 無視できない要因_ なんじゃないかと。

例えばこのBlogは公開直前までテンプレートエンジンにText::MicroMasonを使ってたんですが、 僕の書いたテンプレートだと相当遅くなって、ページを表示するのに5~8秒ぐらいかかってたんですけど、 これをinterpolate_fancyを改造したものに変えてから2~5秒とだいぶ改善されたんですよね。

で、このBlogではblosxomのシステム全体で、

  • CGI
  • CGI::Carp
  • DateTime
  • DateTime::Format::W3CDTF
  • Digest::MD5
  • DirHandle
  • Encode
  • File::Find
  • File::Find::Rule
  • File::Spec
  • File::stat
  • FileHandle
  • HTML::Entities
  • HTTP::Date
  • Jcode
  • PadWaker
  • Path::Class
  • Text::ASCIIMathML
  • Time::localtime
  • YAML::Syck

これだけのモジュール(本当は他にも読み込まれてる)を読み込んでるわけですが、 そういうほども遅くはなっていない。

まあこれは遅いモジュールを使ってないだけなのかも知れませんが、 要するに テンプレートとテンプレートエンジン にも原因があるんじゃないかなーと思うわけです。

まあ他にも重い処理はあると思いますけど。

ちと追記:2008-11-13T12:24:27

tokuhiromさんのコメントを読んで、記事を読み直したらなんかおかしなことを言ってるように思えてきたんでちょっと訂正するんですが、

テンプレートエンジンが遅いから CGI Applicationが遅くなる、と言うつもりじゃなくて、

遅いテンプレートエンジンを使ってる とCGI Applicationが遅くなる、ということを言いたかったんですよね。

まあこの辺り僕の書き方が妙だったせいなんですが。

#FIXME

nyarlaが大体

Scrapbox.io でコメントや意見を書く