in reply to Re^4: Unexpected OO accessor benchmarks
in thread Unexpected OO accessor benchmarks

I should have probably not mentioned pre-processing out of context :) The code I'm analyzing is going to be optimized before publishing. So all calls of type a() would be replaced using a regex with type c() throughout the codebase, and then the accessor sub can be deleted. Assuming the gains are worth it in terms of performance increase - but that's what I'm trying to determine ;-)
  • Comment on Re^5: Unexpected OO accessor benchmarks

Replies are listed 'Best First'.
Re^6: Unexpected OO accessor benchmarks
by eric256 (Parson) on Feb 10, 2007 at 02:29 UTC

    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% --

    ___________
    Eric Hodges