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
コメント
コメントはありません
コメントを投稿
コメントを投稿するにはログインが必要です