#!/usr/bin/perl -w
use Benchmark qw(timethese cmpthese countit timestr);
+use CGI::Ex::Dump qw(debug);
use CGI::Ex::Validate;
use Data::FormValidator;
untaint => 1,
},
password2 => {
- validate_if => 'password',
+ validate_if => 'password was_valid',
equals => 'password',
},
email => {
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';
}
}
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% --