diff options
Diffstat (limited to 'benchmarks/type_constraints.pl')
-rw-r--r-- | benchmarks/type_constraints.pl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/benchmarks/type_constraints.pl b/benchmarks/type_constraints.pl new file mode 100644 index 0000000..e9b29f8 --- /dev/null +++ b/benchmarks/type_constraints.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl + +use strict; +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'); +} + +{ + 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, + { + 'hand coded' => sub { + $bar->bar($bar); + }, + 'w/out_constraint' => sub { + $foo->baz($foo); + }, + 'w_constraint' => sub { + $foo->bar($foo); + }, + } +); + +1;
\ No newline at end of file |