← 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:22 2010

File /usr/local/lib/perl5/site_perl/5.10.1/MooseX/ClassAttribute/Meta/Method/Accessor.pm
Statements Executed 31
Statement Execution Time 646µs
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11145µs61µsMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_check_lazyMooseX::ClassAttribute::Meta::Method::Accessor::_inline_check_lazy
11134µs66µsMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_storeMooseX::ClassAttribute::Meta::Method::Accessor::_inline_store
11120µs23µsMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_get_old_value_for_triggerMooseX::ClassAttribute::Meta::Method::Accessor::_inline_get_old_value_for_trigger
11116µs36µsMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_getMooseX::ClassAttribute::Meta::Method::Accessor::_inline_get
11114µs16µsMooseX::ClassAttribute::Meta::Method::Accessor::::BEGIN@3MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@3
11110µs2.53msMooseX::ClassAttribute::Meta::Method::Accessor::::BEGIN@6MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@6
1119µs126µsMooseX::ClassAttribute::Meta::Method::Accessor::::BEGIN@120MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@120
1117µs15µsMooseX::ClassAttribute::Meta::Method::Accessor::::BEGIN@4MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@4
0000s0sMooseX::ClassAttribute::Meta::Method::Accessor::::_generate_clearer_method_inlineMooseX::ClassAttribute::Meta::Method::Accessor::_generate_clearer_method_inline
0000s0sMooseX::ClassAttribute::Meta::Method::Accessor::::_generate_predicate_method_inlineMooseX::ClassAttribute::Meta::Method::Accessor::_generate_predicate_method_inline
0000s0sMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_accessMooseX::ClassAttribute::Meta::Method::Accessor::_inline_access
0000s0sMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_hasMooseX::ClassAttribute::Meta::Method::Accessor::_inline_has
0000s0sMooseX::ClassAttribute::Meta::Method::Accessor::::_inline_init_slotMooseX::ClassAttribute::Meta::Method::Accessor::_inline_init_slot
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::Meta::Method::Accessor;
2
3320µs219µs
# spent 16µs (14+3) within MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@3 which was called # once (14µs+3µs) by MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@6 at line 3
use strict;
# spent 16µs making 1 call to MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@3 # spent 2µs making 1 call to strict::import
4329µs224µs
# spent 15µs (7+8) within MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@4 which was called # once (7µs+8µs) by MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@6 at line 4
use warnings;
# spent 15µs making 1 call to MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@4 # spent 8µs making 1 call to warnings::import
5
63439µs25.05ms
# spent 2.53ms (10µs+2.52) within MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@6 which was called # once (10µs+2.52ms) by MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@6 at line 6
use Moose;
7
812µs1421µsextends 'Moose::Meta::Method::Accessor';
# spent 421µs making 1 call to Moose::extends
9
10
11sub _generate_predicate_method_inline
12{
13 my $attr = (shift)->associated_attribute;
14
15 my $code =
16 eval 'sub {'
17 . $attr->associated_class()->inline_is_class_slot_initialized( $attr->name() )
18 . '}';
19
20 confess "Could not generate inline predicate because : $@" if $@;
21
22 return $code;
23}
24
25sub _generate_clearer_method_inline
26{
27 my $attr = (shift)->associated_attribute;
28 my $meta_instance = $attr->associated_class->instance_metaclass;
29
30 my $code =
31 eval 'sub {'
32 . $attr->associated_class()->inline_deinitialize_class_slot( $attr->name() )
33 . '}';
34
35 confess "Could not generate inline clearer because : $@" if $@;
36
37 return $code;
38}
39
40sub _inline_store
41
# spent 66µs (34+32) within MooseX::ClassAttribute::Meta::Method::Accessor::_inline_store which was called # once (34µs+32µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 52 of Moose/Meta/Method/Accessor.pm
{
421600ns my $self = shift;
431300ns shift;
441700ns my $value = shift;
45
4612µs1900ns my $attr = $self->associated_attribute();
47
4812µs11µs my $meta = $attr->associated_class();
# spent 1µs making 1 call to Class::MOP::Attribute::associated_class
49
5018µs227µs my $code = $meta->inline_set_class_slot_value( $attr->slots(), $value ) . ";";
5118µs13µs $code .= $meta->inline_weaken_class_slot_value( $attr->slots(), $value ) . ";"
# spent 3µs making 1 call to Moose::Meta::Mixin::AttributeCore::is_weak_ref
52 if $attr->is_weak_ref();
53
5414µs return $code;
55}
56
57sub _inline_get
58
# spent 36µs (16+20) within MooseX::ClassAttribute::Meta::Method::Accessor::_inline_get which was called # once (16µs+20µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 52 of Moose/Meta/Method/Accessor.pm
{
591700ns my $self = shift;
60
6112µs11µs my $attr = $self->associated_attribute;
6212µs11µs my $meta = $attr->associated_class();
# spent 1µs making 1 call to Class::MOP::Attribute::associated_class
63
6416µs218µs return $meta->inline_get_class_slot_value( $attr->slots() );
65}
66
67sub _inline_access
68{
69 my $self = shift;
70
71 my $attr = $self->associated_attribute;
72 my $meta = $attr->associated_class();
73
74 return $meta->inline_class_slot_access( $attr->slots() );
75}
76
77sub _inline_has
78{
79 my $self = shift;
80
81 my $attr = $self->associated_attribute;
82 my $meta = $attr->associated_class();
83
84 return $meta->inline_is_class_slot_initialized( $attr->slots() );
85}
86
87sub _inline_init_slot
88{
89 my $self = shift;
90
91 return $self->_inline_store( undef, $_[-1] );
92}
93
94sub _inline_check_lazy
95
# spent 61µs (45+16) within MooseX::ClassAttribute::Meta::Method::Accessor::_inline_check_lazy which was called # once (45µs+16µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 52 of Moose/Meta/Method/Accessor.pm
{
961500ns my $self = shift;
97
98 return
99140µs416µs $self->SUPER::_inline_check_lazy
# spent 14µs making 1 call to Moose::Meta::Method::Accessor::_inline_check_lazy # spent 900ns making 1 call to Class::MOP::Attribute::associated_class # spent 800ns making 1 call to Class::MOP::Method::Accessor::associated_attribute # spent 600ns making 1 call to Class::MOP::Package::name
100 ( q{'} . $self->associated_attribute()->associated_class()->name() . q{'} );
101}
102
103sub _inline_get_old_value_for_trigger
104
# spent 23µs (20+4) within MooseX::ClassAttribute::Meta::Method::Accessor::_inline_get_old_value_for_trigger which was called # once (20µs+4µs) by Moose::Meta::Method::Accessor::_generate_accessor_method_inline at line 52 of Moose/Meta/Method/Accessor.pm
{
1051700ns my $self = shift;
106
10712µs11µs my $attr = $self->associated_attribute();
108114µs13µs return '' unless $attr->has_trigger();
# spent 3µs making 1 call to Moose::Meta::Mixin::AttributeCore::has_trigger
109
110 my $pred =
111 $attr->associated_class()->inline_is_class_slot_initialized( $attr->name() );
112
113 return
114 'my @old = '
115 . $pred . q{ ? }
116 . $self->_inline_get() . q{ : ()} . ";\n";
117
118}
119
120355µs2242µs
# spent 126µs (9+116) within MooseX::ClassAttribute::Meta::Method::Accessor::BEGIN@120 which was called # once (9µs+116µs) by MooseX::ClassAttribute::Role::Meta::Attribute::BEGIN@6 at line 120
no Moose;
121
12219µs1;
123
124=pod
125
126=head1 NAME
127
128MooseX::ClassAttribute::Meta::Method::Accessor - Accessor method generation for class attributes
129
130=head1 DESCRIPTION
131
132This class overrides L<Moose::Meta::Method::Accessor> to do code
133generation properly for class attributes.
134
135=head1 AUTHOR
136
137Dave Rolsky, C<< <autarch@urth.org> >>
138
139=head1 BUGS
140
141See L<MooseX::ClassAttribute> for details.
142
143=head1 COPYRIGHT & LICENSE
144
145Copyright 2007-2008 Dave Rolsky, All Rights Reserved.
146
147This program is free software; you can redistribute it and/or modify
148it under the same terms as Perl itself.
149
150=cut