HTML::Template::Proのベンチマーク

HTML::Templateとの比較

#!/usr/bin/perl

use strict;
use HTML::Template;
use HTML::Template::Pro;
use Benchmark;

my $html = <<EOF;
<TMPL_LOOP NAME=list><TMPL_IF NAME=key><TMPL_VAR NAME=key>,<TMPL_VAR NAME=value><br></TMPL_IF>
</TMPL_LOOP>
EOF

my @list;
map { $list[$_] = { key=>$_, value => rand($_) } } 0..29;

Benchmark::timethese(2000, {
        'HTML::Template' => \&htmltmpl,
        'HTML::Template::Pro' => \&htmltmplpro,
});

sub htmltmpl{
        my $tmpl = HTML::Template->new(
                scalarref => \$html,
                die_on_bad_params=>0
        );
        $tmpl->param('list',\@list);
        $tmpl->output;
}

sub htmltmplpro{
        my $tmpl = HTML::Template::Pro->new(
                scalarref => \$html,
                die_on_bad_params=>0
        );
        $tmpl->param('list',\@list);
        $tmpl->output;
}
結果
Benchmark: timing 2000 iterations of HTML::Template, HTML::Template::Pro...
HTML::Template: 10 wallclock secs (10.29 usr +  0.00 sys = 10.29 CPU) @ 194.36/s (n=2000)
HTML::Template::Pro:  2 wallclock secs ( 1.69 usr +  0.01 sys =  1.70 CPU) @ 1176.47/s (n=2000)

TTとの比較

#!/usr/bin/perl

use strict;
use Template;
use HTML::Template::Pro;
use Benchmark;

my $htpro = <<EOF;
<TMPL_VAR EXPR="comma(num)">
EOF

my $tt = <<EOF;
[% USE Comma %]
[% num | comma %]
EOF

Benchmark::timethese(2000, {
            'TT'                             => \&template,
                'HTML::Template::Pro' => \&htmltmplpro,
                });

sub template {
       my $template = Template->new();
       $template->process(\$tt, {num=>1000}, \my $output);
}

sub htmltmplpro{
        my $tmpl = HTML::Template::Pro->new(
                scalarref => \$htpro,
                die_on_bad_params=>0
        );
        $tmpl->register_function( 'comma', sub {
                local $_ = shift;
                1 while s/((?:\A|[^.0-9])[-+]?\d+)(\d{3})/$1,$2/s;
                return $_;
                } );
        $tmpl->param('num',1000);
        $tmpl->output;
}
結果
Benchmark: timing 2000 iterations of HTML::Template::Pro, TT...
        HTML::Template::Pro:  1 wallclock secs ( 0.44 usr +  0.01 sys =  0.45 CPU) @ 4444.44/s (n=2000)
        TT: 10 wallclock secs ( 9.92 usr +  0.04 sys =  9.96 CPU) @ 200.80/s (n=2000)
created by blog.nomadscafe.jp

コメント

コメントはありません

コメントを投稿

コメントを投稿するにはログインが必要です