X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=benchmarks%2Ftype_constraints.pl;h=e9b29f869a2c763a343ae60f193dc6bb676de562;hb=054898323542f0f85865b5d8fad49c3f4ee982c6;hp=1c53e6e72964bb67a05f348abdfcd51e7d0be92f;hpb=03aac1fa4eb64aca574e5ec3b8f55c4f0327399c;p=gitmo%2FMoose.git diff --git a/benchmarks/type_constraints.pl b/benchmarks/type_constraints.pl index 1c53e6e..e9b29f8 100644 --- a/benchmarks/type_constraints.pl +++ b/benchmarks/type_constraints.pl @@ -7,8 +7,8 @@ use Benchmark qw[cmpthese]; =pod -This benchmark compares the overhead of a -auto-created type constraint vs. none at +This benchmark compares the overhead of a +auto-created type constraint vs. none at all vs. a custom-created type. =cut @@ -17,25 +17,36 @@ all vs. a custom-created type. package Foo; use Moose; use Moose::Util::TypeConstraints; - + has 'baz' => (is => 'rw'); has 'bar' => (is => 'rw', isa => 'Foo'); - #has 'boo' => (is => 'rw', isa => type 'CustomFoo' => where { blessed($_) && $_->isa('Foo') }); +} + +{ + package Bar; + + sub new { bless {} => __PACKAGE__ } + sub bar { + my $self = shift; + $self->{bar} = shift if @_; + $self->{bar}; + } } my $foo = Foo->new; +my $bar = Bar->new; -cmpthese(200_000, +cmpthese(200_000, { + 'hand coded' => sub { + $bar->bar($bar); + }, 'w/out_constraint' => sub { $foo->baz($foo); }, 'w_constraint' => sub { - $foo->bar($foo); + $foo->bar($foo); }, - #'w_custom_constraint' => sub { - # $foo->boo($foo); - #}, } );