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

読了まで:約2分


概要: 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

アバターアイコン兼ロゴ

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。次に備えて待機中。

今は趣味でプログラミングをして生活しています。