Substantially faster.
#!/usr/bin/perl
package My;
use strict;
use lib qw(/home/snowhare/modules/Sub-Parms/Sub-Parms-1.00/lib);
use Sub::Parms qw(:validate);
use Class::ParmList qw (simple_parms);
use Params::Validate qw (validate);
use Benchmark qw(cmpthese);
cmpthese(200000, {
'sub_parms_method' => sub { sub_parms_method( 'ClassName',
+ handle => 'Test', 'thing' => 'something')},
'sub_parms_function' => sub { sub_parms_function( handle =
+> 'Test', 'thing' => 'something')},
'sub_parms_bind_parms_function' => sub { sub_parms_bind_pa
+rms_function( handle => 'Test', 'thing' => 'something')},
'sub_parms_bind_parms_function_req' => sub { sub_parms_bin
+d_parms_function_req( handle => 'Test', 'thing' => 'something')},
'standard_args' => sub { standard_args( handle => 'Test
+', 'thing' => 'something')},
'cf_standard_args' => sub { cf_standard_args( handle => 'T
+est', 'thing' => 'something')},
'one_step_args' => sub { one_step_args( handle => 'Test
+', 'thing' => 'something')},
'positional_args' => sub { positional_args( 'Test', 'some
+thing')},
'null_sub' => sub { null_sub( handle => 'Test', 't
+hing' => 'something')},
'null_method' => sub { null_method( handle => 'Test',
+ 'thing' => 'something')},
'simple_parms' => sub { simple_parms_args( handle => '
+Test', 'thing' => 'something')},
'params_validate' => sub { params_validate( handle => 'Te
+st', 'thing' => 'something')},
}
);
exit;
######################################################################
+######
sub params_validate {
my ($handle, $thing) = @{(validate(@_, { handle => 1, thing => 1 }
+))}{'handle','thing'};
}
sub sub_parms_method {
MethodParms := $self, %args;
my ($handle, $thing) = @args{'handle','thing'};
}
sub sub_parms_function {
ParmsHash := %args;
my ($handle, $thing) = @args{'handle','thing'};
}
sub sub_parms_bind_parms_function {
BindParms : (
my $handle := handle;
my $thing := thing;
)
}
sub sub_parms_bind_parms_function_req {
BindParms : (
my $handle := handle [required];
my $thing := thing [required];
)
}
sub simple_parms_args {
my ($handle, $thing) = simple_parms(['handle','thing'], @_);
}
sub positional_args {
my ($handle, $thing) = @_;
}
sub one_step_args {
my %args = @_;
my ($handle, $thing) = @args{'handle','thing'};
}
sub cf_standard_args {
my %args;
{
my %raw_args = @_;
%args = map { lc($_) => $raw_args{$_} } keys %raw_args;
}
my ($handle, $thing) = @args{'handle','thing'};
}
sub standard_args {
my %args = @_;
my ($handle, $thing) = @args{'handle','thing'};
}
sub null_sub { }
sub null_method { }