]> 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 76845f3d7a5608d4564dc77a6a8e7ff8eb3f65f0..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,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%        --
This page took 0.021265 seconds and 4 git commands to generate.