#!/usr/bin/perl package Blah; sub new { my $class = shift; my $self = { arg1 => 1, arg2 => 1 }; bless $self,$class ; return $self; } sub obj_internal { my $self = shift; return $$obj{arg1} + $$obj{arg2} } sub obj_pos_param { my ($self, $p1,$p2) = @_; return $p1 + $p2 } sub obj_named_param { my ($self, %p) = @_; return $p{arg1} + $p{arg2} } package main; use Benchmark qw(:all); our $obj = Blah->new; sub param { my ($p1,$p2) = @_; return $p1 + $p2 } sub named_param { my %p = @_; return $p{arg1} + $p{arg2} } cmpthese (5000000, { param => 'param(1,1)', named_pram => 'named_param(arg1 => 1,arg2 => 1)', obj_internal => '$obj->obj_internal()', obj_pos_param => '$obj->obj_pos_param(1,1)', obj_named_param => '$obj->obj_named_param(arg1 => 1,arg2 => 1)', })