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% --まだ課題は多数ありますが、いい感じだと思います。では続きは台湾で!