]> Dogcows Code - chaz/p5-CGI-Ex/blobdiff - samples/benchmark/bench_validation.pl
CGI::Ex 2.27
[chaz/p5-CGI-Ex] / samples / benchmark / bench_validation.pl
index 24244d9d8da1f612a39c712b1c2e852c65028f81..9da5d8fcd30a59656646feb883ace7931cd5807b 100644 (file)
@@ -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,35 +95,37 @@ 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) },
   data_val  => sub { my $t = Data::FormValidator->check($form, $val_hash_df) },
-  homegrown => sub { my $t = scalar keys %{ check_form($form) } },
+  homegrown => sub { my $t = check_form($form) },
 },'auto');
 
 cmpthese (-2,{
   cgi_ex    => sub { my $t = CGI::Ex::Validate->validate($form, $val_hash_ce)->as_hash },
   data_val  => sub { my $t = Data::FormValidator->check($form, $val_hash_df)->msgs },
-  homegrown => sub { my $t = check_form($form) },
+  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.12 usr +  0.00 sys =  2.12 CPU) @ 1430.66/s (n=3033)
-#   data_val:  2 wallclock secs ( 2.01 usr +  0.00 sys =  2.01 CPU) @ 2588.56/s (n=5203)
-#  homegrown:  2 wallclock secs ( 2.19 usr +  0.01 sys =  2.20 CPU) @ 54733.18/s (n=120413)
-#              Rate    cgi_ex  data_val homegrown
-# cgi_ex     1431/s        --      -45%      -97%
-# data_val   2589/s       81%        --      -95%
-# homegrown 54733/s     3726%     2014%        --
+#   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.10 usr +  0.00 sys =  2.10 CPU) @ 1218.57/s (n=2559)
-#   data_val:  2 wallclock secs ( 2.14 usr +  0.00 sys =  2.14 CPU) @ 2092.99/s (n=4479)
-#  homegrown:  2 wallclock secs ( 2.14 usr +  0.00 sys =  2.14 CPU) @ 56267.76/s (n=120413)
-#              Rate    cgi_ex  data_val homegrown
-# cgi_ex     1219/s        --      -42%      -98%
-# data_val   2093/s       72%        --      -96%
-# homegrown 56268/s     4518%     2588%        --
+#   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%        --
This page took 0.027439 seconds and 4 git commands to generate.