Since the slowest version is running 646k iterations per second on my machine I think you should probably look elsewhere for ways to improve your code. I would think that the risk of using regex to modify code is not justified by such a very very minimal optimization.
Update: forgot the code the first time ;)
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark 'cmpthese';
my $self = bless [123], '::main';
cmpthese( 10_000_000 , {
normal => sub { $self->get_value() },
optimized => sub { $self->get_value2() },
direct => sub { $self->[0] },
});
exit(0);
sub get_value {
my $self = shift;
return $self->[0];
}
sub get_value2 {
$_[0]->[0];
}
__END__
C:\Perl\test>perl methods_access_599259.pl
Rate normal optimized direct
normal 646454/s -- -29% -92%
optimized 915583/s 42% -- -89%
direct 8532423/s 1220% 832% --
|