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% --
In reply to Re^6: Unexpected OO accessor benchmarks
by eric256
in thread Unexpected OO accessor benchmarks
by cLive ;-)
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |