← Index
Performance Profile   « block view • line view • sub view »
For t/test-parsing
  Run on Sun Nov 14 09:49:57 2010
Reported on Sun Nov 14 09:50:11 2010

File /usr/local/lib/perl/5.10.0/Moose/Meta/TypeConstraint/Registry.pm
Statements Executed 362
Total Time 0.0019228 seconds
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2961429µs856µsMoose::Meta::TypeConstraint::Registry::::add_type_constraintMoose::Meta::TypeConstraint::Registry::add_type_constraint
5631379µs582µsMoose::Meta::TypeConstraint::Registry::::get_type_constraintMoose::Meta::TypeConstraint::Registry::get_type_constraint
4111283µs481µsMoose::Meta::TypeConstraint::Registry::::has_type_constraintMoose::Meta::TypeConstraint::Registry::has_type_constraint
11114µs452µsMoose::Meta::TypeConstraint::Registry::::newMoose::Meta::TypeConstraint::Registry::new
1117µs7µsMoose::Meta::TypeConstraint::Registry::::__ANON__[:24]Moose::Meta::TypeConstraint::Registry::__ANON__[:24]
0000s0sMoose::Meta::TypeConstraint::Registry::::BEGINMoose::Meta::TypeConstraint::Registry::BEGIN
0000s0sMoose::Meta::TypeConstraint::Registry::::find_type_constraintMoose::Meta::TypeConstraint::Registry::find_type_constraint
LineStmts.Exclusive
Time
Avg.Code
1
2package Moose::Meta::TypeConstraint::Registry;
3
4331µs10µsuse strict;
# spent 12µs making 1 call to strict::import
5327µs9µsuse warnings;
# spent 26µs making 1 call to warnings::import
6350µs17µsuse metaclass;
# spent 819µs making 1 call to metaclass::import
7
8382µs27µsuse Scalar::Util 'blessed';
# spent 56µs making 1 call to Exporter::import
9
101800ns800nsour $VERSION = '1.15';
11123µs23µs$VERSION = eval $VERSION;
121600ns600nsour $AUTHORITY = 'cpan:STEVAN';
13
143379µs126µsuse base 'Class::MOP::Object';
# spent 73µs making 1 call to base::import
15
16129µs29µs__PACKAGE__->meta->add_attribute('parent_registry' => (
# spent 1.15ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 44µs making 1 call to Moose::Meta::TypeConstraint::Registry::meta
17 reader => 'get_parent_registry',
18 writer => 'set_parent_registry',
19 predicate => 'has_parent_registry',
20));
21
22__PACKAGE__->meta->add_attribute('type_constraints' => (
23 reader => 'type_constraints',
2412µs2µs
# spent 7µs within Moose::Meta::TypeConstraint::Registry::__ANON__[/usr/local/lib/perl/5.10.0/Moose/Meta/TypeConstraint/Registry.pm:24] which was called # once (7µs+0s) by Class::MOP::Mixin::AttributeCore::default at line 53 of /usr/local/lib/perl/5.10.0/Class/MOP/Mixin/AttributeCore.pm
default => sub { {} }
25112µs12µs));
# spent 576µs making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 29µs making 1 call to Moose::Meta::TypeConstraint::Registry::meta
26
27
# spent 452µs (14+438) within Moose::Meta::TypeConstraint::Registry::new which was called # once (14µs+438µs) at line 59 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm
sub new {
2811µs1µs my $class = shift;
29111µs11µs my $self = $class->_new(@_);
# spent 438µs making 1 call to Class::MOP::Object::_new
3011µs1µs return $self;
31}
32
33
# spent 481µs (283+198) within Moose::Meta::TypeConstraint::Registry::has_type_constraint which was called 41 times, avg 12µs/call: # 41 times (283µs+198µs) by Moose::Util::TypeConstraints::find_type_constraint at line 260 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm, avg 12µs/call
sub has_type_constraint {
344158µs1µs my ($self, $type_name) = @_;
3541229µs6µs ($type_name and exists $self->type_constraints->{$type_name}) ? 1 : 0
# spent 198µs making 41 calls to Moose::Meta::TypeConstraint::Registry::type_constraints, avg 5µs/call
36}
37
38
# spent 582µs (379+203) within Moose::Meta::TypeConstraint::Registry::get_type_constraint which was called 56 times, avg 10µs/call: # 34 times (226µs+120µs) by Moose::Util::TypeConstraints::find_type_constraint at line 261 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm, avg 10µs/call # 18 times (121µs+70µs) by Moose::Util::TypeConstraints::_create_type_constraint at line 522 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm, avg 11µs/call # 4 times (32µs+13µs) at line 850 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm, avg 11µs/call
sub get_type_constraint {
395670µs1µs my ($self, $type_name) = @_;
405617µs304ns return unless defined $type_name;
4156251µs4µs $self->type_constraints->{$type_name}
# spent 203µs making 56 calls to Moose::Meta::TypeConstraint::Registry::type_constraints, avg 4µs/call
42}
43
44
# spent 856µs (429+427) within Moose::Meta::TypeConstraint::Registry::add_type_constraint which was called 29 times, avg 30µs/call: # 18 times (249µs+263µs) by Moose::Util::TypeConstraints::_create_type_constraint at line 560 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm, avg 28µs/call # 7 times (104µs+111µs) by Moose::Util::TypeConstraints::register_type_constraint at line 269 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm, avg 31µs/call # once (31µs+14µs) at line 788 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm # once (15µs+13µs) at line 830 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm # once (15µs+13µs) at line 809 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm # once (15µs+13µs) at line 847 of /usr/local/lib/perl/5.10.0/Moose/Util/TypeConstraints.pm
sub add_type_constraint {
452931µs1µs my ($self, $type) = @_;
46
4729302µs10µs unless ( $type && blessed $type && $type->isa('Moose::Meta::TypeConstraint') ) {
# spent 109µs making 29 calls to UNIVERSAL::isa, avg 4µs/call # spent 87µs making 29 calls to Scalar::Util::blessed, avg 3µs/call
48 require Moose;
49 Moose->throw_error("No type supplied / type is not a valid type constraint");
50 }
51
5229302µs10µs $self->type_constraints->{$type->name} = $type;
# spent 124µs making 29 calls to Moose::Meta::TypeConstraint::name, avg 4µs/call # spent 108µs making 29 calls to Moose::Meta::TypeConstraint::Registry::type_constraints, avg 4µs/call
53}
54
55sub find_type_constraint {
56 my ($self, $type_name) = @_;
57 return $self->get_type_constraint($type_name)
58 if $self->has_type_constraint($type_name);
59 return $self->get_parent_registry->find_type_constraint($type_name)
60 if $self->has_parent_registry;
61 return;
62}
63
64114µs14µs1;
65
66__END__
67
68
69=pod
70
71=head1 NAME
72
73Moose::Meta::TypeConstraint::Registry - registry for type constraints
74
75=head1 DESCRIPTION
76
77This class is a registry that maps type constraint names to
78L<Moose::Meta::TypeConstraint> objects.
79
80Currently, it is only used internally by
81L<Moose::Util::TypeConstraints>, which creates a single global
82registry.
83
84=head1 INHERITANCE
85
86C<Moose::Meta::TypeConstraint::Registry> is a subclass of
87L<Class::MOP::Object>.
88
89=head1 METHODS
90
91=over 4
92
93=item B<< Moose::Meta::TypeConstraint::Registry->new(%options) >>
94
95This creates a new registry object based on the provided C<%options>:
96
97=over 8
98
99=item * parent_registry
100
101This is an optional L<Moose::Meta::TypeConstraint::Registry>
102object.
103
104=item * type_constraints
105
106This is hash reference of type names to type objects. This is
107optional. Constraints can be added to the registry after it is
108created.
109
110=back
111
112=item B<< $registry->get_parent_registry >>
113
114Returns the registry's parent registry, if it has one.
115
116=item B<< $registry->has_parent_registry >>
117
118Returns true if the registry has a parent.
119
120=item B<< $registry->set_parent_registry($registry) >>
121
122Sets the parent registry.
123
124=item B<< $registry->get_type_constraint($type_name) >>
125
126This returns the L<Moose::Meta::TypeConstraint> object from the
127registry for the given name, if one exists.
128
129=item B<< $registry->has_type_constraint($type_name) >>
130
131Returns true if the registry has a type of the given name.
132
133=item B<< $registry->add_type_constraint($type) >>
134
135Adds a new L<Moose::Meta::TypeConstraint> object to the registry.
136
137=item B<< $registry->find_type_constraint($type_name) >>
138
139This method looks in the current registry for the named type. If the
140type is not found, then this method will look in the registry's
141parent, if it has one.
142
143=back
144
145=head1 BUGS
146
147See L<Moose/BUGS> for details on reporting bugs.
148
149=head1 AUTHOR
150
151Stevan Little E<lt>stevan@iinteractive.comE<gt>
152
153=head1 COPYRIGHT AND LICENSE
154
155Copyright 2006-2010 by Infinity Interactive, Inc.
156
157L<http://www.iinteractive.com>
158
159This library is free software; you can redistribute it and/or modify
160it under the same terms as Perl itself.
161
162=cut