← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 21:45:08 2010
Reported on Wed Nov 17 22:13:53 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Moose/Meta/TypeConstraint/DuckType.pm
StatementsExecuted 29 statements in 2.96ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11175µs92µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@3Moose::Meta::TypeConstraint::DuckType::BEGIN@3
11157µs3.04msMoose::Meta::TypeConstraint::DuckType::::BEGIN@5Moose::Meta::TypeConstraint::DuckType::BEGIN@5
11141µs204µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@7Moose::Meta::TypeConstraint::DuckType::BEGIN@7
11141µs186µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@8Moose::Meta::TypeConstraint::DuckType::BEGIN@8
11140µs299µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@17Moose::Meta::TypeConstraint::DuckType::BEGIN@17
11138µs108µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@4Moose::Meta::TypeConstraint::DuckType::BEGIN@4
11138µs915µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@9Moose::Meta::TypeConstraint::DuckType::BEGIN@9
11123µs23µsMoose::Meta::TypeConstraint::DuckType::::BEGIN@11Moose::Meta::TypeConstraint::DuckType::BEGIN@11
0000s0sMoose::Meta::TypeConstraint::DuckType::::__ANON__[:65]Moose::Meta::TypeConstraint::DuckType::__ANON__[:65]
0000s0sMoose::Meta::TypeConstraint::DuckType::::__ANON__[:66]Moose::Meta::TypeConstraint::DuckType::__ANON__[:66]
0000s0sMoose::Meta::TypeConstraint::DuckType::::__ANON__[:79]Moose::Meta::TypeConstraint::DuckType::__ANON__[:79]
0000s0sMoose::Meta::TypeConstraint::DuckType::::__ANON__[:80]Moose::Meta::TypeConstraint::DuckType::__ANON__[:80]
0000s0sMoose::Meta::TypeConstraint::DuckType::::_compile_hand_optimized_type_constraintMoose::Meta::TypeConstraint::DuckType::_compile_hand_optimized_type_constraint
0000s0sMoose::Meta::TypeConstraint::DuckType::::constraintMoose::Meta::TypeConstraint::DuckType::constraint
0000s0sMoose::Meta::TypeConstraint::DuckType::::create_child_typeMoose::Meta::TypeConstraint::DuckType::create_child_type
0000s0sMoose::Meta::TypeConstraint::DuckType::::equalsMoose::Meta::TypeConstraint::DuckType::equals
0000s0sMoose::Meta::TypeConstraint::DuckType::::get_messageMoose::Meta::TypeConstraint::DuckType::get_message
0000s0sMoose::Meta::TypeConstraint::DuckType::::newMoose::Meta::TypeConstraint::DuckType::new
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Moose::Meta::TypeConstraint::DuckType;
2
33106µs2110µs
# spent 92µs (75+18) within Moose::Meta::TypeConstraint::DuckType::BEGIN@3 which was called: # once (75µs+18µs) by Moose::Util::TypeConstraints::BEGIN@36 at line 3
use strict;
# spent 92µs making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@3 # spent 18µs making 1 call to strict::import
4395µs2177µs
# spent 108µs (38+69) within Moose::Meta::TypeConstraint::DuckType::BEGIN@4 which was called: # once (38µs+69µs) by Moose::Util::TypeConstraints::BEGIN@36 at line 4
use warnings;
# spent 108µs making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@4 # spent 69µs making 1 call to warnings::import
53154µs26.03ms
# spent 3.04ms (57µs+2.99) within Moose::Meta::TypeConstraint::DuckType::BEGIN@5 which was called: # once (57µs+2.99ms) by Moose::Util::TypeConstraints::BEGIN@36 at line 5
use metaclass;
# spent 3.04ms making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@5 # spent 2.99ms making 1 call to metaclass::import
6
73197µs2368µs
# spent 204µs (41+163) within Moose::Meta::TypeConstraint::DuckType::BEGIN@7 which was called: # once (41µs+163µs) by Moose::Util::TypeConstraints::BEGIN@36 at line 7
use Scalar::Util 'blessed';
# spent 204µs making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@7 # spent 163µs making 1 call to Exporter::import
83107µs2332µs
# spent 186µs (41+146) within Moose::Meta::TypeConstraint::DuckType::BEGIN@8 which was called: # once (41µs+146µs) by Moose::Util::TypeConstraints::BEGIN@36 at line 8
use List::MoreUtils qw(all);
# spent 186µs making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@8 # spent 146µs making 1 call to Exporter::import
93133µs21.79ms
# spent 915µs (38+877) within Moose::Meta::TypeConstraint::DuckType::BEGIN@9 which was called: # once (38µs+877µs) by Moose::Util::TypeConstraints::BEGIN@36 at line 9
use Moose::Util 'english_list';
# spent 915µs making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@9 # spent 877µs making 1 call to Sub::Exporter::__ANON__[Sub/Exporter.pm:756]
10
113227µs123µs
# spent 23µs within Moose::Meta::TypeConstraint::DuckType::BEGIN@11 which was called: # once (23µs+0s) by Moose::Util::TypeConstraints::BEGIN@36 at line 11
use Moose::Util::TypeConstraints ();
12
1316µsour $VERSION = '1.19';
14164µs$VERSION = eval $VERSION;
# spent 12µs executing statements in string eval
1513µsour $AUTHORITY = 'cpan:STEVAN';
16
1731.81ms2557µs
# spent 299µs (40+259) within Moose::Meta::TypeConstraint::DuckType::BEGIN@17 which was called: # once (40µs+259µs) by Moose::Util::TypeConstraints::BEGIN@36 at line 17
use base 'Moose::Meta::TypeConstraint';
# spent 299µs making 1 call to Moose::Meta::TypeConstraint::DuckType::BEGIN@17 # spent 259µs making 1 call to base::import
18
19128µs22.19ms__PACKAGE__->meta->add_attribute('methods' => (
# spent 2.07ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 119µs making 1 call to Moose::Meta::TypeConstraint::DuckType::meta
20 accessor => 'methods',
21));
22
23sub new {
24 my ( $class, %args ) = @_;
25
26 $args{parent} = Moose::Util::TypeConstraints::find_type_constraint('Object');
27
28 my $self = $class->_new(\%args);
29
30 $self->compile_type_constraint()
31 unless $self->_has_compiled_type_constraint;
32
33 return $self;
34}
35
36sub equals {
37 my ( $self, $type_or_name ) = @_;
38
39 my $other = Moose::Util::TypeConstraints::find_type_constraint($type_or_name);
40
41 return unless $other->isa(__PACKAGE__);
42
43 my @self_methods = sort @{ $self->methods };
44 my @other_methods = sort @{ $other->methods };
45
46 return unless @self_methods == @other_methods;
47
48 while ( @self_methods ) {
49 my $method = shift @self_methods;
50 my $other_method = shift @other_methods;
51
52 return unless $method eq $other_method;
53 }
54
55 return 1;
56}
57
58sub constraint {
59 my $self = shift;
60
61 my @methods = @{ $self->methods };
62
63 return sub {
64 my $obj = shift;
65 return all { $obj->can($_) } @methods
66 };
67}
68
69sub _compile_hand_optimized_type_constraint {
70 my $self = shift;
71
72 my @methods = @{ $self->methods };
73
74 sub {
75 my $obj = shift;
76
77 return blessed($obj)
78 && blessed($obj) ne 'Regexp'
79 && all { $obj->can($_) } @methods;
80 };
81}
82
83sub create_child_type {
84 my ($self, @args) = @_;
85 return Moose::Meta::TypeConstraint->new(@args, parent => $self);
86}
87
88sub get_message {
89 my $self = shift;
90 my ($value) = @_;
91
92 if ($self->has_message) {
93 return $self->SUPER::get_message(@_);
94 }
95
96 my @methods = grep { !$value->can($_) } @{ $self->methods };
97 my $class = blessed $value;
98 return $class
99 . " is missing methods "
100 . english_list(map { "'$_'" } @methods);
101}
102
103126µs1;
104
105__END__