sub get() { 'a'; } use constant get_constant=> 'a'; #### sub get { 'a'; } sub get { return 'a'; } sub get() { return 'a'; } #### package class; use strict; sub new { my ( $proto )= @_; my $class= ref($proto) || $proto; my $self= bless ( {} , $class ); return $self; } sub get_sub { 'a'; } sub get_sub_nullproto () { 'a'; } sub get_sub_return { return 'a'; } sub get_sub_return_nullproto () { return 'a'; } use constant get_constant=> 'a'; package main; use strict; use Benchmark qw[ cmpthese ]; my $object= class->new(); cmpthese -1, { get_sub => sub { my $a= $object->get_sub; }, get_sub__paren => sub { my $a= $object->get_sub(); }, get_sub_nullproto => sub { my $a= $object->get_sub_nullproto; }, get_sub_nullproto__paren => sub { my $a= $object->get_sub_nullproto(); }, get_sub_return => sub { my $a= $object->get_sub_return; }, get_sub_return__paren => sub { my $a= $object->get_sub_return(); }, get_sub_return_nullproto => sub { my $a= $object->get_sub_return_nullproto; }, get_sub_return_nullproto__paren => sub { my $a= $object->get_sub_return_nullproto(); }, get_constant => sub { my $a= $object->get_constant; }, get_constant__paren => sub { my $a= $object->get_constant(); }, };