You're testing compile time. First scripts loads Moose and tons of its dependencies. Try to write some more realistic tests. Here's something to start:
use 5.010; use strict; use warnings; { package M1; use Moose; has x => ( is => 'rw' ); } { package M2; use Moose; has x => ( is => 'rw' ); no Moose; __PACKAGE__->meta->make_immutable; } { package M3; use Moose; has x => ( is => 'rw', isa => 'Int' ); no Moose; __PACKAGE__->meta->make_immutable; } { package NM; sub new { my $class = shift; return bless {@_}, $class; } sub x { my $self = shift; $self->{x} = shift if @_; $self->{x}; } } use Benchmark qw( cmpthese ); cmpthese - 5, { "Moose mutable" => sub { M1->new( x => 1 ) }, "Moose immutable" => sub { M2->new( x => 1 ) }, "Moose with type check" => sub { M3->new( x => 1 ) }, "No Moose" => sub { NM->new( x => 1 ) }, };
Generally, if you're using Moose, code performance will decrease, but your performance and code quality will increase (though it depends of course).
In reply to Re^3: Moose performance
by zwon
in thread Moose performance
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |