OSDC.TWで発表します

来週末、4/24に開催されるOSDC.TW(or Shibuya.pm #13)で発表します。

そこでは、高速テンプレートエンジン Xslate を紹介するつもりです。これはまだコードを書き始めたばかりで完成には程遠いものの、すでに従来のテンプレートエンジンと比較すると数倍のパフォーマンスが出ています。

もちろん、いくら高速でも使いにくければ意味がありません。この点では、たとえばText::MicroTemplateなどのように、出力を自動的にHTMLエスケープする機能などもすでに持っています。

とりあえず今のところは以下のようなテンプレートで:
http://gist.github.com/367990

Hello, <:= $lang :> world!

構文がよく似たText::MicroTemplateや、簡易文字列展開法であるs/%(\w+)%/$vars{$1}/gと比較すると以下の通りです*1

$ perl -Mblib benchmark/interpolate.pl
Perl/5.10.1 i686-linux
Text::Xslate/0.001
Text::MicroTemplate/0.11
          Rate  s///g     mt xslate
s///g   7177/s     --    -1%   -78%
mt      7245/s     1%     --   -78%
xslate 32581/s   354%   350%     --

リストのループを行う以下のようなテンプレートでは:
http://gist.github.com/367992

<ul>
: for $books ->($item) {
    <li><:= $item.title :></li>
: }
</ul>

Text::MicroTemplateやHTML::Template::Proと比較すると、やはり圧倒的に高速です。

$ perl -Mblib benchmark/for.pl
Perl/5.10.1 i686-linux
Text::Xslate/0.001
Text::MicroTemplate/0.11
HTML::Template::Pro/0.94
          Rate     mt     ht xslate
mt     11270/s     --   -20%   -60%
ht     14092/s    25%     --   -50%
xslate 28183/s   150%   100%     --

まだ課題は多数ありますが、いい感じだと思います。では続きは台湾で!

*1:実際の相対的速度はPerlバイナリによってかなり変わると思いますが