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