use strict; use warnings; use lib 'lib'; use HTML::FormFu; use HTML::Widget; use CGI::FormBuilder; use Benchmark qw( cmpthese ); my $formfu = formfu(); my $widget = widget(); my $builder = builder(); #print $formfu; #print "\n\n**********\n\n"; #print $widget->process; #print "\n\n**********\n\n"; #print $builder->render; #exit; # make sure TT has loaded/cached everything my $output = "$formfu"; cmpthese( 100, { 'HTML::FormFu' => sub { $output = "$formfu"; }, 'HTML::Widget' => sub { $output = $widget->process->as_xml; }, 'CGI::FormBuilder' => sub { $output = $builder->render; }, } ); sub formfu { my $form = HTML::FormFu->new; $form->render_method('string'); # $form->tt_args({ # TEMPLATE_ALLOY => 1, # COMPILE_DIR => 'benchmarks/cache', # COMPILE_PERL => 1, # INCLUDE_PATH => 'share/templates/tt/xhtml', # }); for (1..10) { $form->element({ type => 'Text', name => "text$_" }) ->label("text & $_") ->size(10); } $form->element({ type => 'Select', name => 'select' }) ->values( [1907 .. 2007] ) ->default(2007); $form->element({ type => 'Submit', name => 'submit' }); return $form; } sub widget { my $form = HTML::Widget->new; for (1..10) { $form->element( "Textfield", "text$_" ) ->label("text & $_") ->size(10); } $form->element( "Select", "select" ) ->options( map { $_, $_ } 1907 .. 2007 ) ->selected(2007); $form->element( "Submit", "submit" ); return $form; } sub builder { my $form = CGI::FormBuilder->new; for (1..10) { $form->field( name => "text$_", size => 10, label => "text & $_", ); } $form->field( name => "select", options => [ 1907 .. 2007 ], value => 2007, ); return $form; }