C:\test>type junk99.pl use Benchmark qw(cmpthese); { package Foo1; sub new { bless $_[1], $_[0] } sub foo { $_[0]{foo} } } { package Foo2; use Moo; has foo => (is => 'ro'); } { package Foo3; use Moose; has foo => (is => 'ro'); } our $foo1 = Foo1::->new({foo => 0}); our $foo2 = Foo2::->new({foo => 0}); our $foo3 = Foo3::->new({foo => 0}); our $foo4 = { foo => 0 }; cmpthese( -3, { OO_perl => q[ $foo1->foo for 1 .. 1000; ], moo => q[ $foo2->foo for 1 .. 1000; ], moose => q[ $foo3->foo for 1 .. 1000; ], plain_perl => q[ $foo4->{foo} for 1 .. 1000; ], }); C:\test>junk99 Rate moose moo OO_perl plain_perl moose 2004/s -- -3% -15% -74% moo 2068/s 3% -- -13% -73% OO_perl 2366/s 18% 14% -- -69% plain_perl 7624/s 280% 269% 222% --