Add another MOOSE_TEST_MD option, MooseX
[gitmo/Moose.git] / benchmarks / type_constraints.pl
index 7b1469b..e9b29f8 100644 (file)
@@ -5,29 +5,48 @@ use warnings;
 
 use Benchmark qw[cmpthese];
 
+=pod
+
+This benchmark compares the overhead of a
+auto-created type constraint vs. none at
+all vs. a custom-created type.
+
+=cut
+
 {
     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);            
-        },        
     }
 );