← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 05.Domain_and_Item.t
  Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:23:00 2010

File /usr/local/lib/perl5/site_perl/5.10.1/MooseX/ClassAttribute/Role/Meta/Attribute.pm
Statements Executed 50
Statement Execution Time 774µs
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111615µs3.72msMooseX::ClassAttribute::Role::Meta::Attribute::::BEGIN@6MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@6
11132µs260µsMooseX::ClassAttribute::Role::Meta::Attribute::::_initializeMooseX::ClassAttribute::Role::Meta::Attribute::_initialize
11117µs24µsMooseX::ClassAttribute::Role::Meta::Attribute::::BEGIN@3MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@3
1119µs1.51msMooseX::ClassAttribute::Role::Meta::Attribute::::BEGIN@8MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@8
1119µs28µsMooseX::ClassAttribute::Role::Meta::Attribute::::BEGIN@4MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@4
1118µs112µsMooseX::ClassAttribute::Role::Meta::Attribute::::BEGIN@138MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@138
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:102]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:102]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:112]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:112]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:120]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:120]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:128]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:128]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:136]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:136]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:18]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:18]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:31]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:31]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:43]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:43]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:54]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:54]
0000s0sMooseX::ClassAttribute::Role::Meta::Attribute::::__ANON__[:84]MooseX::ClassAttribute::Role::Meta::Attribute::__ANON__[:84]
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package MooseX::ClassAttribute::Role::Meta::Attribute;
2
3324µs231µs
# spent 24µs (17+7) within MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@3 which was called # once (17µs+7µs) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@7 at line 3
use strict;
# spent 24µs making 1 call to MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@3 # spent 7µs making 1 call to strict::import
4322µs248µs
# spent 28µs (9+19) within MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@4 which was called # once (9µs+19µs) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@7 at line 4
use warnings;
# spent 28µs making 1 call to MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@4 # spent 19µs making 1 call to warnings::import
5
63111µs13.72ms
# spent 3.72ms (615µs+3.11) within MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@6 which was called # once (615µs+3.11ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@7 at line 6
use MooseX::ClassAttribute::Meta::Method::Accessor;
7
83438µs23.01ms
# spent 1.51ms (9µs+1.50) within MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@8 which was called # once (9µs+1.50ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@7 at line 8
use Moose::Role;
9
10# This is the worst role evar! Really, this should be a subclass,
11# because it overrides a lot of behavior. However, as a subclass it
12# won't cooperate with _other_ subclasses like
13# MX::AttributeHelpers::Base.
14
15around 'accessor_metaclass' => sub
16{
1713µs return 'MooseX::ClassAttribute::Meta::Method::Accessor';
1813µs156µs};
# spent 56µs making 1 call to Moose::Role::around
19
20around '_process_options' => sub
21{
2211µs my $orig = shift;
231700ns my $class = shift;
241400ns my $name = shift;
251500ns my $options = shift;
26
271600ns confess 'A class attribute cannot be required'
28 if $options->{required};
29
3014µs112µs return $class->$orig( $name, $options );
# spent 12µs making 1 call to Moose::Meta::Attribute::_process_options
3113µs130µs};
# spent 30µs making 1 call to Moose::Role::around
32
33around attach_to_class => sub
34{
351800ns my $orig = shift;
361800ns my $self = shift;
371600ns my $meta = shift;
38
3912µs193µs $self->$orig($meta);
# spent 93µs making 1 call to Class::MOP::Attribute::attach_to_class
40
41120µs2265µs $self->_initialize($meta)
42 unless $self->is_lazy();
4312µs129µs};
# spent 29µs making 1 call to Moose::Role::around
44
45around 'detach_from_class' => sub
46{
47 my $orig = shift;
48 my $self = shift;
49 my $meta = shift;
50
51 $self->clear_value($meta);
52
53 $self->$orig($meta);
5412µs129µs};
# spent 29µs making 1 call to Moose::Role::around
55
56sub _initialize
57
# spent 260µs (32+228) within MooseX::ClassAttribute::Role::Meta::Attribute::_initialize which was called # once (32µs+228µs) by Class::MOP::Class:::around at line 41
{
5811µs my $self = shift;
591700ns my $metaclass = shift;
60
61120µs3228µs if ( $self->has_default() )
# spent 170µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::2::set_value # spent 55µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::2::default # spent 3µs making 1 call to Class::MOP::Mixin::AttributeCore::has_default
62 {
63 $self->set_value( undef, $self->default() );
64 }
65 elsif ( $self->has_builder() )
66 {
67 $self->set_value( undef, $self->_call_builder( $metaclass->name() ) );
68 }
69}
70
71around 'default' => sub
72{
731900ns my $orig = shift;
741600ns my $self = shift;
75
7612µs13µs my $default = $self->$orig();
# spent 3µs making 1 call to Class::MOP::Mixin::AttributeCore::default
77
78117µs311µs if ( $self->is_default_a_coderef() )
79 {
80 return $default->( $self->associated_class() );
81 }
82
83 return $default;
8412µs128µs};
# spent 28µs making 1 call to Moose::Role::around
85
86around '_call_builder' => sub
87{
88 shift;
89 my $self = shift;
90 my $class = shift;
91
92 my $builder = $self->builder();
93
94 return $class->$builder()
95 if $class->can( $self->builder );
96
97 confess( "$class does not support builder method '"
98 . $self->builder
99 . "' for attribute '"
100 . $self->name
101 . "'" );
10212µs129µs};
# spent 29µs making 1 call to Moose::Role::around
103
104around 'set_value' => sub
105{
1061500ns shift;
1071700ns my $self = shift;
1081200ns shift; # ignoring instance or class name
1091200ns my $value = shift;
110
111120µs3134µs $self->associated_class()->set_class_attribute_value( $self->name() => $value );
# spent 131µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::1::set_class_attribute_value # spent 2µs making 1 call to Class::MOP::Attribute::associated_class # spent 1µs making 1 call to Class::MOP::Mixin::AttributeCore::name
11212µs128µs};
# spent 28µs making 1 call to Moose::Role::around
113
114around 'get_value' => sub
115{
116 shift;
117 my $self = shift;
118
119 return $self->associated_class()->get_class_attribute_value( $self->name() );
12012µs130µs};
# spent 30µs making 1 call to Moose::Role::around
121
122around 'has_value' => sub
123{
124 shift;
125 my $self = shift;
126
127 return $self->associated_class()->has_class_attribute_value( $self->name() );
12812µs129µs};
# spent 29µs making 1 call to Moose::Role::around
129
130around 'clear_value' => sub
131{
132 shift;
133 my $self = shift;
134
135 return $self->associated_class()->clear_class_attribute_value( $self->name() );
13612µs129µs};
# spent 29µs making 1 call to Moose::Role::around
137
138338µs2216µs
# spent 112µs (8+104) within MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@138 which was called # once (8µs+104µs) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@7 at line 138
no Moose::Role;
139
140120µs1;
141
142__END__
143
144=pod
145
146=head1 NAME
147
148MooseX::ClassAttribute::Role::Meta::Attribute - An attribute role for classes with class attributes
149
150=head1 DESCRIPTION
151
152This role modifies the behavior of class attributes in various
153ways. It really should be a subclass of C<Moose::Meta::Attribute>, but
154if it were then it couldn't be combined with other attribute
155metaclasses, like C<MooseX::AttributeHelpers>.
156
157There are no new public methods implemented by this role. All it does
158is change the behavior of a number of existing methods.
159
160=head1 AUTHOR
161
162Dave Rolsky, C<< <autarch@urth.org> >>
163
164=head1 BUGS
165
166See L<MooseX::ClassAttribute> for details.
167
168=head1 COPYRIGHT & LICENSE
169
170Copyright 2007-2008 Dave Rolsky, All Rights Reserved.
171
172This program is free software; you can redistribute it and/or modify
173it under the same terms as Perl itself.
174
175=cut
176
177