(便乗ネタ)テンプレートエンジンのベンチマークをTripletailでやってみた。

ClearSilver の Perl バインディングを使う(Perlのテンプレートエンジンのベンチマーク) - spiritlooseのはてなダイアリー
ClearSilver、Template-Toolkit、HTML::Templateのベンチマークを取っているのを見てTripletail::Templateも一緒にやってみた。
コードは同じやつを拝借してTripletail用のコードを追加する。
benchmark.pl

#!/usr/bin/perl

use strict;
use warnings;

use Benchmark qw(timethese cmpthese);
use Template;
use ClearSilver;
use HTML::Template;
use Tripletail qw(/dev/null);

my $bench = timethese(10000,
    {
        'Template-Toolkit' => sub {
            my $tt = Template->new;
            my $out;
            $tt->process('hello.tmpl', { message => 'hello world!' }, ?$out);
        },
        'ClearSilver' => sub {
            my $hdf = ClearSilver::HDF->new;
            $hdf->setValue('message', 'hello world!');
            my $cs = ClearSilver::CS->new($hdf);
            $cs->parseFile('hello.tmpl');
            my $out = $cs->render;
        },
        'HTML::Template' => sub {
            my $template = HTML::Template->new(filename => 'hello.tmpl');
            $template->param(message => 'hello world!');
            my $out = $template->output;
        },
        'Tripletail' => sub {
            my $t = $TL->newTemplate('hello.tmpl');
            $t->expand(message => 'hello world!');
            my $str = $t->toStr();
        },
    },
);
cmpthese($bench);

hello.tmpl

[% message %]
<?cs var:message ?>
<TMPL_VAR NAME=message>
<&message>

こうなった。

Rate Template-Toolkit Tripletail HTML::Template ClearSilver
Template-Toolkit 215/s -- -29% -80% -98%
Tripletail 303/s 41% -- -72% -97%
HTML::Template 1078/s 401% 256% -- -91%
ClearSilver 11765/s 5368% 3785% 992% --

うーむ。

    • -

TL - Perlフレームワーク