- 2010/8/13 金曜日 19:54:00
- perl
TTの158倍速いというxslateですが、このベンチマークはSyntax::Kolonを使っています。
TT互換なSyntaxであるところの、Syntax::TTerseを使うとどうなるのかなということでhttp://github.com/nihen/p5-Text-Xslate/tree/add_tterse_benchのbenchmark/x-rich-enc.plとbenchmark/x-poor-env.plにTTerseも追加してみました。
以下結果
%perl benchmark/x-rich-env.pl Perl/5.12.1 i686-linux Text::Xslate/0.1056 Text::MicroTemplate/0.15 Text::MicroTemplate::Extended/0.11 Template/2.22 Text::ClearSilver/0.10.5.4 HTML::Template::Pro/0.9502 1..5 ok 1 - TTerse: Text::Xslate::Syntax::TTerse ok 2 - TT: Template-Toolkit ok 3 - MT: Text::MicroTemplate ok 4 - TCS: Text::ClearSilver ok 5 - HTP: HTML::Template::Pro Benchmarks with 'include' (datasize=100) Rate TT MT TCS HTP Xslate TTerse TT 78.6/s -- -69% -94% -95% -99% -99% MT 257/s 227% -- -82% -84% -98% -98% TCS 1412/s 1697% 450% -- -11% -89% -89% HTP 1586/s 1918% 517% 12% -- -88% -88% Xslate 13241/s 16752% 5054% 838% 735% -- -1% TTerse 13397/s 16951% 5115% 849% 745% 1% --
%perl benchmark/x-poor-env.pl Perl/5.12.1 i686-linux Text::Xslate/0.1056 Template/2.22 HTML::Template/2.9 Text::MicroTemplate/0.15 Text::MicroTemplate::Extended/0.11 1..4 ok 1 - TTerse: Text::Xslate::Syntax::TTerse ok 2 - TT: Template-Toolkit ok 3 - MT: Text::MicroTemplate ok 4 - HT: HTML::Template Benchmarks with 'include' (datasize=100) Rate TT TTerse Xslate HT MT TT 49.5/s -- -27% -28% -61% -80% TTerse 67.9/s 37% -- -1% -47% -73% Xslate 68.5/s 38% 1% -- -46% -73% HT 127/s 157% 88% 86% -- -50% MT 253/s 411% 273% 269% 99% --
このように誤差の範囲ぐらいの差しか無く同様に速い。
これはなぜかというと、Xslateは様々なSyntaxで書かれたテンプレートを共通の中間コードにコンパイルし、それをキャッシュしているためその中間コードはほぼ同一のものになるからです。
一応そのコンパイル部分には差が現れるが、ファイルキャッシュもできない環境というのはほぼありえないので実運用上、速度の差は無いと言ってよいとおもわれる。というわけでTT使ってる人は安心してTTerseに移行してみるといいと思うです。(互換性がどの程度あるのかは使ってないから知らないけど!)
ちなみにコンパイル部分のみのベンチマーク
% perl author/bench_compile.pl Parser: Kolon v.s. TTerse Rate tterse kolon tterse 80.1/s -- -42% kolon 139/s 74% --
コメント:0
トラックバック:0
- この記事のトラックバック URL
- https://blog.everqueue.com/chiba/2010/08/13/434/trackback/
- トラックバックの送信元リスト
- XslateはSyntaxを変えても基本的には実運用上の速度は変わらない - へぼい日記 より