X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=benchmarks%2Fimmutable.pl;h=8118511dd89a1047705a90ec2fa9ae6f8baf138b;hb=b8e5ce4aa3805b8fa86e2d4c213b78859ee6007b;hp=ac116142ec8be290f4609e12144265bd7659c277;hpb=8ecb1fa00856ddb07f4e006c79fe4c48e08902c0;p=gitmo%2FMoose.git diff --git a/benchmarks/immutable.pl b/benchmarks/immutable.pl index ac11614..8118511 100644 --- a/benchmarks/immutable.pl +++ b/benchmarks/immutable.pl @@ -23,39 +23,62 @@ coerce 'Foo' use Moose; has 'default' => (is => 'rw', default => 10); - has 'default_sub' => (is => 'rw', default => sub { [] }); + has 'default_sub' => (is => 'rw', default => sub { [] }); has 'lazy' => (is => 'rw', default => 10, lazy => 1); - has 'required' => (is => 'rw', required => 1); - has 'weak_ref' => (is => 'rw', weak_ref => 1); - has 'type_constraint' => (is => 'rw', isa => 'Foo'); - has 'coercion' => (is => 'rw', isa => 'Foo', coerce => 1); - + has 'required' => (is => 'rw', required => 1); + has 'weak_ref' => (is => 'rw', weak_ref => 1); + has 'type_constraint' => (is => 'rw', isa => 'Foo'); + has 'coercion' => (is => 'rw', isa => 'Foo', coerce => 1); + + package Bar::Normal; + use Moose; + + extends 'Foo::Normal'; + + has 'default_w_type_constraint' => ( + is => 'rw', + isa => 'Int', + default => 10, + ); } { package Foo::Immutable; use Moose; - + has 'default' => (is => 'rw', default => 10); - has 'default_sub' => (is => 'rw', default => sub { [] }); + has 'default_sub' => (is => 'rw', default => sub { [] }); has 'lazy' => (is => 'rw', default => 10, lazy => 1); - has 'required' => (is => 'rw', required => 1); - has 'weak_ref' => (is => 'rw', weak_ref => 1); - has 'type_constraint' => (is => 'rw', isa => 'Foo'); + has 'required' => (is => 'rw', required => 1); + has 'weak_ref' => (is => 'rw', weak_ref => 1); + has 'type_constraint' => (is => 'rw', isa => 'Foo'); has 'coercion' => (is => 'rw', isa => 'Foo', coerce => 1); - - sub BUILD { - # ... - } - - Foo::Immutable->meta->make_immutable(debug => 1); + + #sub BUILD { + # # ... + #} + + Foo::Immutable->meta->make_immutable(debug => 0); + + package Bar::Immutable; + use Moose; + + extends 'Foo::Immutable'; + + has 'default_w_type_constraint' => ( + is => 'rw', + isa => 'Int', + default => 10, + ); + + Bar::Immutable->meta->make_immutable(debug => 0); } #__END__ my $foo = Foo->new; -cmpthese(500, +cmpthese(10_000, { 'normal' => sub { Foo::Normal->new( @@ -70,7 +93,7 @@ cmpthese(500, required => 'BAR', type_constraint => $foo, coercion => [], - weak_ref => {}, + weak_ref => {}, ); }, }