foo
[gitmo/Moose.git] / benchmarks / type_constraints.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Benchmark qw[cmpthese];
7
8 =pod
9
10 This benchmark compares the overhead of a 
11 auto-created type constraint vs. none at 
12 all vs. a custom-created type.
13
14 =cut
15
16 {
17     package Foo;
18     use Moose;
19     use Moose::Util::TypeConstraints;
20     
21     has 'baz' => (is => 'rw');
22     has 'bar' => (is => 'rw', isa => 'Foo');
23 }
24
25 my $foo = Foo->new;
26
27 cmpthese(200_000, 
28     {
29         'w/out_constraint' => sub {
30             $foo->baz($foo);
31         },
32         'w_constraint' => sub {
33             $foo->bar($foo);            
34         },        
35     }
36 );
37
38 1;