X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-CGI-Ex;a=blobdiff_plain;f=samples%2Fbenchmark%2Fbench_validation.pl;fp=samples%2Fbenchmark%2Fbench_validation.pl;h=9da5d8fcd30a59656646feb883ace7931cd5807b;hp=76845f3d7a5608d4564dc77a6a8e7ff8eb3f65f0;hb=febed4ec71f803b083c3e61b82b9464e9bfb0992;hpb=ed00221d27dfab1e82ec2ea040ab4c399a91c545 diff --git a/samples/benchmark/bench_validation.pl b/samples/benchmark/bench_validation.pl index 76845f3..9da5d8f 100644 --- a/samples/benchmark/bench_validation.pl +++ b/samples/benchmark/bench_validation.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl -w use Benchmark qw(timethese cmpthese countit timestr); +use CGI::Ex::Dump qw(debug); use CGI::Ex::Validate; use Data::FormValidator; @@ -26,7 +27,7 @@ my $val_hash_ce = { untaint => 1, }, password2 => { - validate_if => 'password', + validate_if => 'password was_valid', equals => 'password', }, email => { @@ -77,8 +78,10 @@ sub check_form { push @{ $hash->{'password_error'} }, 'Password must be less than 30 characters'; } - if (! defined($form->{'password2'}) - || $form->{'password2'} ne $form->{'password'}) { + if (exists($form->{'password'}) + && ! $hash->{'password_error'} + && (! defined($form->{'password2'}) + || $form->{'password2'} ne $form->{'password'})) { push @{ $hash->{'password2_error'} }, 'Password2 and password must be the same'; } } @@ -92,6 +95,9 @@ sub check_form { return $hash; } +debug(CGI::Ex::Validate->validate($form, $val_hash_ce)->as_hash); +debug(Data::FormValidator->check($form, $val_hash_df)->msgs); +debug(check_form($form)); cmpthese (-2,{ cgi_ex => sub { my $t = CGI::Ex::Validate->validate($form, $val_hash_ce) }, @@ -105,22 +111,21 @@ cmpthese (-2,{ homegrown => sub { my $t = scalar keys %{ check_form($form) } }, },'auto'); - ### Home grown solution blows the others away - but lacks features # # Benchmark: running cgi_ex, data_val, homegrown for at least 2 CPU seconds... -# cgi_ex: 2 wallclock secs ( 2.08 usr + 0.01 sys = 2.09 CPU) @ 2045.93/s (n=4276) -# data_val: 2 wallclock secs ( 2.15 usr + 0.00 sys = 2.15 CPU) @ 3496.28/s (n=7517) -# homegrown: 2 wallclock secs ( 2.09 usr + 0.01 sys = 2.10 CPU) @ 81919.52/s (n=172031) -# Rate cgi_ex data_val homegrown -# cgi_ex 2046/s -- -41% -98% -# data_val 3496/s 71% -- -96% -# homegrown 81920/s 3904% 2243% -- +# cgi_ex: 3 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 2845.10/s (n=5804) +# data_val: 3 wallclock secs ( 2.17 usr + 0.00 sys = 2.17 CPU) @ 1884.79/s (n=4090) +# homegrown: 3 wallclock secs ( 2.13 usr + 0.00 sys = 2.13 CPU) @ 77093.43/s (n=164209) +# Rate data_val cgi_ex homegrown +# data_val 1885/s -- -34% -98% +# cgi_ex 2845/s 51% -- -96% +# homegrown 77093/s 3990% 2610% -- # Benchmark: running cgi_ex, data_val, homegrown for at least 2 CPU seconds... -# cgi_ex: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 1696.68/s (n=3580) -# data_val: 2 wallclock secs ( 2.04 usr + 0.00 sys = 2.04 CPU) @ 2845.10/s (n=5804) -# homegrown: 2 wallclock secs ( 2.01 usr + 0.00 sys = 2.01 CPU) @ 83674.13/s (n=168185) -# Rate cgi_ex data_val homegrown -# cgi_ex 1697/s -- -40% -98% -# data_val 2845/s 68% -- -97% -# homegrown 83674/s 4832% 2841% -- +# cgi_ex: 2 wallclock secs ( 2.21 usr + 0.01 sys = 2.22 CPU) @ 2421.17/s (n=5375) +# data_val: 2 wallclock secs ( 2.27 usr + 0.03 sys = 2.30 CPU) @ 1665.22/s (n=3830) +# homegrown: 2 wallclock secs ( 2.04 usr + 0.01 sys = 2.05 CPU) @ 72820.00/s (n=149281) +# Rate data_val cgi_ex homegrown +# data_val 1665/s -- -31% -98% +# cgi_ex 2421/s 45% -- -97% +# homegrown 72820/s 4273% 2908% --