#!perl # based on http://www.geminium.com/chiba_blog/2009/07/12/212/ use strict; use warnings; use utf8; use FindBin qw($Bin); binmode STDOUT, ':utf8'; use Benchmark qw/cmpthese/; use Text::Xslate; use Text::Xslate qw(html_builder); use HTML::FillInForm; use HTML::FillInForm::Lite; print "Benchmark: HTML::FillInForm vs. HTML::FillInForm::Lite\n"; chdir $Bin; my $t = Text::Xslate->new( syntax => 'TTerse', cache_dir => '.xslate_cache', function => { fillinform => html_builder(\&fillinform), fillinformlite => html_builder(\&fillinformlite), }, ); my $f = HTML::FillInForm->new; my $fl = HTML::FillInForm::Lite->new; my $filldata = {mail => 'foobar at example.com', name => '日本語の名前', tel => '123-456-789'}; cmpthese(-1, { fillinall => sub { my $output = $t->render("html/test.html", { hoge => 'aha' }); $f->fill(\$output, $filldata); }, fillinpart => sub { my $output = $t->render("html/test_part.html", { hoge => 'aha', filldata => $filldata, }); }, fillinall_lite => sub { my $output = $t->render("html/test.html", { hoge => 'aha' }); $fl->fill(\$output, $filldata); }, fillinpart_lite => sub { my $output = $t->render("html/test_part_lite.html", { hoge => 'aha', filldata => $filldata, }); }, }); sub fillinform { my ($data, @options) = @_; return sub { my $html = shift; $f->fill(\$html, $data, @options); }; } sub fillinformlite { my ($data, @options) = @_; return sub { my $html = shift; $fl->fill(\$html, $data, @options); }; }