Filename | /Users/dde/perl5/perlbrew/perls/5.18.0t/lib/site_perl/5.18.0/darwin-thread-multi-2level/Class/MOP/Method/Accessor.pm |
Statements | Executed 6036 statements in 17.1ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
223 | 1 | 1 | 6.46ms | 66.3ms | _initialize_body | Class::MOP::Method::Accessor::
280 | 3 | 3 | 5.35ms | 19.2ms | _new | Class::MOP::Method::Accessor::
249 | 2 | 2 | 4.71ms | 123ms | new | Class::MOP::Method::Accessor::
58 | 2 | 2 | 516µs | 20.9ms | _generate_reader_method_inline | Class::MOP::Method::Accessor::
44 | 2 | 2 | 403µs | 32.1ms | _generate_accessor_method_inline | Class::MOP::Method::Accessor::
53 | 1 | 1 | 264µs | 301µs | _generate_reader_method | Class::MOP::Method::Accessor::
24 | 2 | 2 | 234µs | 4.92ms | _generate_predicate_method_inline | Class::MOP::Method::Accessor::
22 | 1 | 1 | 112µs | 127µs | _generate_accessor_method | Class::MOP::Method::Accessor::
16 | 1 | 1 | 75µs | 86µs | _generate_predicate_method | Class::MOP::Method::Accessor::
53 | 1 | 1 | 64µs | 64µs | _inline_throw_error | Class::MOP::Method::Accessor::
3 | 1 | 1 | 36µs | 484µs | _generate_writer_method_inline | Class::MOP::Method::Accessor::
3 | 1 | 1 | 17µs | 19µs | _generate_writer_method | Class::MOP::Method::Accessor::
1 | 1 | 1 | 8µs | 8µs | BEGIN@3 | Class::MOP::Method::Accessor::
1 | 1 | 1 | 7µs | 10µs | BEGIN@11 | Class::MOP::Method::Accessor::
1 | 1 | 1 | 6µs | 41µs | BEGIN@15 | Class::MOP::Method::Accessor::
1 | 1 | 1 | 6µs | 1.91ms | BEGIN@17 | Class::MOP::Method::Accessor::
1 | 1 | 1 | 6µs | 29µs | BEGIN@14 | Class::MOP::Method::Accessor::
1 | 1 | 1 | 6µs | 17µs | BEGIN@10 | Class::MOP::Method::Accessor::
1 | 1 | 1 | 5µs | 26µs | BEGIN@13 | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:104] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:120] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:123] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:134] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:154] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:157] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:171] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:184] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:187] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:196] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:209] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:212] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:221] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:234] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | __ANON__[:237] | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | _generate_clearer_method | Class::MOP::Method::Accessor::
0 | 0 | 0 | 0s | 0s | _generate_clearer_method_inline | Class::MOP::Method::Accessor::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | |||||
2 | package Class::MOP::Method::Accessor; | ||||
3 | # spent 8µs within Class::MOP::Method::Accessor::BEGIN@3 which was called:
# once (8µs+0s) by Class::MOP::Class::BEGIN@15 at line 5 | ||||
4 | 1 | 4µs | $Class::MOP::Method::Accessor::AUTHORITY = 'cpan:STEVAN'; | ||
5 | 1 | 26µs | 1 | 8µs | } # spent 8µs making 1 call to Class::MOP::Method::Accessor::BEGIN@3 |
6 | { | ||||
7 | 2 | 900ns | $Class::MOP::Method::Accessor::VERSION = '2.1005'; | ||
8 | } | ||||
9 | |||||
10 | 2 | 19µs | 2 | 28µs | # spent 17µs (6+11) within Class::MOP::Method::Accessor::BEGIN@10 which was called:
# once (6µs+11µs) by Class::MOP::Class::BEGIN@15 at line 10 # spent 17µs making 1 call to Class::MOP::Method::Accessor::BEGIN@10
# spent 11µs making 1 call to strict::import |
11 | 2 | 20µs | 2 | 13µs | # spent 10µs (7+3) within Class::MOP::Method::Accessor::BEGIN@11 which was called:
# once (7µs+3µs) by Class::MOP::Class::BEGIN@15 at line 11 # spent 10µs making 1 call to Class::MOP::Method::Accessor::BEGIN@11
# spent 3µs making 1 call to warnings::import |
12 | |||||
13 | 2 | 25µs | 2 | 47µs | # spent 26µs (5+21) within Class::MOP::Method::Accessor::BEGIN@13 which was called:
# once (5µs+21µs) by Class::MOP::Class::BEGIN@15 at line 13 # spent 26µs making 1 call to Class::MOP::Method::Accessor::BEGIN@13
# spent 21µs making 1 call to Exporter::import |
14 | 2 | 20µs | 2 | 53µs | # spent 29µs (6+24) within Class::MOP::Method::Accessor::BEGIN@14 which was called:
# once (6µs+24µs) by Class::MOP::Class::BEGIN@15 at line 14 # spent 29µs making 1 call to Class::MOP::Method::Accessor::BEGIN@14
# spent 24µs making 1 call to Exporter::import |
15 | 2 | 23µs | 2 | 76µs | # spent 41µs (6+35) within Class::MOP::Method::Accessor::BEGIN@15 which was called:
# once (6µs+35µs) by Class::MOP::Class::BEGIN@15 at line 15 # spent 41µs making 1 call to Class::MOP::Method::Accessor::BEGIN@15
# spent 35µs making 1 call to Exporter::import |
16 | |||||
17 | 2 | 994µs | 2 | 3.81ms | # spent 1.91ms (6µs+1.90) within Class::MOP::Method::Accessor::BEGIN@17 which was called:
# once (6µs+1.90ms) by Class::MOP::Class::BEGIN@15 at line 17 # spent 1.91ms making 1 call to Class::MOP::Method::Accessor::BEGIN@17
# spent 1.90ms making 1 call to base::import |
18 | |||||
19 | # spent 123ms (4.71+118) within Class::MOP::Method::Accessor::new which was called 249 times, avg 493µs/call:
# 188 times (2.77ms+28.9ms) by Class::MOP::Attribute::try {...} at line 389 of Class/MOP/Attribute.pm, avg 169µs/call
# 61 times (1.94ms+89.2ms) by Class::MOP::Attribute::try {...} or Class::MOP::Class:::around at line 20 of Moose/Meta/Method/Accessor.pm, avg 1.49ms/call | ||||
20 | 249 | 32µs | my $class = shift; | ||
21 | 249 | 481µs | my %options = @_; | ||
22 | |||||
23 | 249 | 58µs | (exists $options{attribute}) | ||
24 | || confess "You must supply an attribute to construct with"; | ||||
25 | |||||
26 | 249 | 31µs | (exists $options{accessor_type}) | ||
27 | || confess "You must supply an accessor_type to construct with"; | ||||
28 | |||||
29 | 249 | 1.03ms | 498 | 308µs | (blessed($options{attribute}) && $options{attribute}->isa('Class::MOP::Attribute')) # spent 166µs making 249 calls to Scalar::Util::blessed, avg 665ns/call
# spent 143µs making 249 calls to UNIVERSAL::isa, avg 573ns/call |
30 | || confess "You must supply an attribute which is a 'Class::MOP::Attribute' instance"; | ||||
31 | |||||
32 | 249 | 54µs | ($options{package_name} && $options{name}) | ||
33 | || confess "You must supply the package_name and name parameters $Class::MOP::Method::UPGRADE_ERROR_TEXT"; | ||||
34 | |||||
35 | 249 | 249µs | 249 | 1.13ms | my $self = $class->_new(\%options); # spent 1.03ms making 188 calls to Class::MOP::Method::Accessor::_new, avg 5µs/call
# spent 65µs making 26 calls to Moose::Meta::Method::Accessor::Native::_new, avg 3µs/call
# spent 36µs making 35 calls to Moose::Meta::Method::Accessor::_new, avg 1µs/call |
36 | |||||
37 | # we don't want this creating | ||||
38 | # a cycle in the code, if not | ||||
39 | # needed | ||||
40 | 249 | 1.56ms | 249 | 219µs | weaken($self->{'attribute'}); # spent 219µs making 249 calls to Scalar::Util::weaken, avg 879ns/call |
41 | |||||
42 | 249 | 602µs | 249 | 98.6ms | $self->_initialize_body; # spent 66.3ms making 223 calls to Class::MOP::Method::Accessor::_initialize_body, avg 297µs/call
# spent 32.4ms making 26 calls to Moose::Meta::Method::Accessor::Native::_initialize_body, avg 1.25ms/call |
43 | |||||
44 | 249 | 521µs | return $self; | ||
45 | } | ||||
46 | |||||
47 | # spent 19.2ms (5.35+13.8) within Class::MOP::Method::Accessor::_new which was called 280 times, avg 68µs/call:
# 188 times (1.03ms+0s) by Class::MOP::Method::Accessor::new at line 35, avg 5µs/call
# 57 times (305µs+0s) by Class::MOP::Method::wrap at line 46 of Class/MOP/Method.pm, avg 5µs/call
# 35 times (4.01ms+13.8ms) by Class::MOP::Method::Accessor::new at line 24 of Moose/Meta/Method/Accessor.pm, avg 510µs/call | ||||
48 | 280 | 39µs | my $class = shift; | ||
49 | |||||
50 | 280 | 144µs | 70 | 13.8ms | return Class::MOP::Class->initialize($class)->new_object(@_) # spent 13.4ms making 35 calls to Class::MOP::Class::new_object, avg 382µs/call
# spent 468µs making 35 calls to Class::MOP::Class::initialize, avg 13µs/call |
51 | if $class ne __PACKAGE__; | ||||
52 | |||||
53 | 245 | 74µs | my $params = @_ == 1 ? $_[0] : {@_}; | ||
54 | |||||
55 | 245 | 1.35ms | return bless { | ||
56 | # inherited from Class::MOP::Method | ||||
57 | body => $params->{body}, | ||||
58 | associated_metaclass => $params->{associated_metaclass}, | ||||
59 | package_name => $params->{package_name}, | ||||
60 | name => $params->{name}, | ||||
61 | original_method => $params->{original_method}, | ||||
62 | |||||
63 | # inherit from Class::MOP::Generated | ||||
64 | is_inline => $params->{is_inline} || 0, | ||||
65 | definition_context => $params->{definition_context}, | ||||
66 | |||||
67 | # defined in this class | ||||
68 | attribute => $params->{attribute}, | ||||
69 | accessor_type => $params->{accessor_type}, | ||||
70 | } => $class; | ||||
71 | } | ||||
72 | |||||
73 | ## accessors | ||||
74 | |||||
75 | 648 | 1.09ms | sub associated_attribute { (shift)->{'attribute'} } | ||
76 | 223 | 381µs | sub accessor_type { (shift)->{'accessor_type'} } | ||
77 | |||||
78 | ## factory | ||||
79 | |||||
80 | # spent 66.3ms (6.46+59.8) within Class::MOP::Method::Accessor::_initialize_body which was called 223 times, avg 297µs/call:
# 223 times (6.46ms+59.8ms) by Class::MOP::Method::Accessor::new at line 42, avg 297µs/call | ||||
81 | 223 | 27µs | my $self = shift; | ||
82 | |||||
83 | 223 | 5.53ms | 446 | 304µs | my $method_name = join "_" => ( # spent 190µs making 223 calls to Class::MOP::Method::Accessor::accessor_type, avg 852ns/call
# spent 114µs making 223 calls to Class::MOP::Method::Generated::is_inline, avg 510ns/call |
84 | '_generate', | ||||
85 | $self->accessor_type, | ||||
86 | 'method', | ||||
87 | ($self->is_inline ? 'inline' : ()) | ||||
88 | ); | ||||
89 | |||||
90 | 223 | 653µs | 223 | 59.5ms | $self->{'body'} = $self->$method_name(); # spent 27.3ms making 22 calls to Moose::Meta::Method::Accessor::_generate_accessor_method, avg 1.24ms/call
# spent 17.8ms making 54 calls to Class::MOP::Method::Accessor::_generate_reader_method_inline, avg 330µs/call
# spent 5.12ms making 22 calls to Class::MOP::Method::Accessor::_generate_accessor_method_inline, avg 233µs/call
# spent 3.21ms making 4 calls to Moose::Meta::Method::Accessor::_generate_reader_method, avg 802µs/call
# spent 2.59ms making 16 calls to Class::MOP::Method::Accessor::_generate_predicate_method_inline, avg 162µs/call
# spent 2.45ms making 8 calls to Moose::Meta::Method::Accessor::_generate_predicate_method, avg 306µs/call
# spent 484µs making 3 calls to Class::MOP::Method::Accessor::_generate_writer_method_inline, avg 161µs/call
# spent 301µs making 53 calls to Class::MOP::Method::Accessor::_generate_reader_method, avg 6µs/call
# spent 127µs making 22 calls to Class::MOP::Method::Accessor::_generate_accessor_method, avg 6µs/call
# spent 86µs making 16 calls to Class::MOP::Method::Accessor::_generate_predicate_method, avg 5µs/call
# spent 19µs making 3 calls to Class::MOP::Method::Accessor::_generate_writer_method, avg 6µs/call |
91 | } | ||||
92 | |||||
93 | ## generators | ||||
94 | |||||
95 | # spent 127µs (112+15) within Class::MOP::Method::Accessor::_generate_accessor_method which was called 22 times, avg 6µs/call:
# 22 times (112µs+15µs) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 6µs/call | ||||
96 | 22 | 2µs | my $self = shift; | ||
97 | 22 | 14µs | 22 | 15µs | my $attr = $self->associated_attribute; # spent 15µs making 22 calls to Class::MOP::Method::Accessor::associated_attribute, avg 682ns/call |
98 | |||||
99 | return sub { | ||||
100 | if (@_ >= 2) { | ||||
101 | $attr->set_value($_[0], $_[1]); | ||||
102 | } | ||||
103 | $attr->get_value($_[0]); | ||||
104 | 22 | 83µs | }; | ||
105 | } | ||||
106 | |||||
107 | # spent 32.1ms (403µs+31.7) within Class::MOP::Method::Accessor::_generate_accessor_method_inline which was called 44 times, avg 730µs/call:
# 22 times (205µs+26.8ms) by Moose::Meta::Method::Accessor::_generate_accessor_method at line 74 of Moose/Meta/Method/Accessor.pm, avg 1.23ms/call
# 22 times (197µs+4.93ms) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 233µs/call | ||||
108 | 44 | 6µs | my $self = shift; | ||
109 | 44 | 29µs | 44 | 28µs | my $attr = $self->associated_attribute; # spent 28µs making 44 calls to Class::MOP::Method::Accessor::associated_attribute, avg 639ns/call |
110 | |||||
111 | return try { | ||||
112 | 44 | 235µs | 132 | 30.4ms | $self->_compile_code([ # spent 11.8ms making 22 calls to Moose::Meta::Attribute::_inline_set_value, avg 535µs/call
# spent 9.08ms making 22 calls to Moose::Meta::Method::Accessor::_compile_code, avg 413µs/call
# spent 5.19ms making 22 calls to Moose::Meta::Attribute::_inline_get_value, avg 236µs/call
# spent 2.93ms making 22 calls to Class::MOP::Method::Generated::_compile_code, avg 133µs/call
# spent 1.10ms making 22 calls to Class::MOP::Attribute::_inline_set_value, avg 50µs/call
# spent 332µs making 22 calls to Class::MOP::Attribute::_inline_get_value, avg 15µs/call |
113 | 'sub {', | ||||
114 | 'if (@_ > 1) {', | ||||
115 | $attr->_inline_set_value('$_[0]', '$_[1]'), | ||||
116 | '}', | ||||
117 | $attr->_inline_get_value('$_[0]'), | ||||
118 | '}', | ||||
119 | ]); | ||||
120 | } | ||||
121 | catch { | ||||
122 | confess "Could not generate inline accessor because : $_"; | ||||
123 | 44 | 248µs | 88 | 92µs | }; # spent 92µs making 44 calls to Try::Tiny::catch, avg 2µs/call
# spent 31.6ms making 44 calls to Try::Tiny::try, avg 718µs/call, recursion: max depth 3, sum of overlapping time 31.6ms |
124 | } | ||||
125 | |||||
126 | # spent 301µs (264+37) within Class::MOP::Method::Accessor::_generate_reader_method which was called 53 times, avg 6µs/call:
# 53 times (264µs+37µs) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 6µs/call | ||||
127 | 53 | 6µs | my $self = shift; | ||
128 | 53 | 34µs | 53 | 37µs | my $attr = $self->associated_attribute; # spent 37µs making 53 calls to Class::MOP::Method::Accessor::associated_attribute, avg 700ns/call |
129 | |||||
130 | return sub { | ||||
131 | 12 | 2µs | confess "Cannot assign a value to a read-only accessor" | ||
132 | if @_ > 1; | ||||
133 | 12 | 33µs | 12 | 229µs | $attr->get_value($_[0]); # spent 229µs making 12 calls to Class::MOP::Attribute::get_value, avg 19µs/call |
134 | 53 | 190µs | }; | ||
135 | } | ||||
136 | |||||
137 | # spent 20.9ms (516µs+20.4) within Class::MOP::Method::Accessor::_generate_reader_method_inline which was called 58 times, avg 361µs/call:
# 54 times (474µs+17.3ms) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 330µs/call
# 4 times (42µs+3.09ms) by Moose::Meta::Method::Accessor::_generate_reader_method at line 62 of Moose/Meta/Method/Accessor.pm, avg 782µs/call | ||||
138 | 58 | 6µs | my $self = shift; | ||
139 | 58 | 38µs | 58 | 39µs | my $attr = $self->associated_attribute; # spent 39µs making 58 calls to Class::MOP::Method::Accessor::associated_attribute, avg 679ns/call |
140 | |||||
141 | return try { | ||||
142 | 58 | 264µs | 174 | 18.9ms | $self->_compile_code([ # spent 8.51ms making 53 calls to Class::MOP::Attribute::_inline_get_value, avg 161µs/call
# spent 6.81ms making 53 calls to Class::MOP::Method::Generated::_compile_code, avg 128µs/call
# spent 1.60ms making 5 calls to Moose::Meta::Method::Accessor::_compile_code, avg 320µs/call
# spent 1.19ms making 5 calls to Moose::Meta::Attribute::_inline_get_value, avg 238µs/call
# spent 685µs making 5 calls to Moose::Meta::Method::_inline_throw_error, avg 137µs/call
# spent 64µs making 53 calls to Class::MOP::Method::Accessor::_inline_throw_error, avg 1µs/call |
143 | 'sub {', | ||||
144 | 'if (@_ > 1) {', | ||||
145 | # XXX: this is a hack, but our error stuff is terrible | ||||
146 | $self->_inline_throw_error( | ||||
147 | '"Cannot assign a value to a read-only accessor"', | ||||
148 | 'data => \@_' | ||||
149 | ) . ';', | ||||
150 | '}', | ||||
151 | $attr->_inline_get_value('$_[0]'), | ||||
152 | '}', | ||||
153 | ]); | ||||
154 | } | ||||
155 | catch { | ||||
156 | confess "Could not generate inline reader because : $_"; | ||||
157 | 58 | 321µs | 116 | 119µs | }; # spent 119µs making 58 calls to Try::Tiny::catch, avg 2µs/call
# spent 20.3ms making 58 calls to Try::Tiny::try, avg 349µs/call, recursion: max depth 3, sum of overlapping time 20.3ms |
158 | } | ||||
159 | |||||
160 | # spent 64µs within Class::MOP::Method::Accessor::_inline_throw_error which was called 53 times, avg 1µs/call:
# 53 times (64µs+0s) by Class::MOP::Method::Accessor::try {...} at line 142, avg 1µs/call | ||||
161 | 53 | 6µs | my $self = shift; | ||
162 | 53 | 95µs | return 'Carp::confess ' . $_[0]; | ||
163 | } | ||||
164 | |||||
165 | # spent 19µs (17+2) within Class::MOP::Method::Accessor::_generate_writer_method which was called 3 times, avg 6µs/call:
# 3 times (17µs+2µs) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 6µs/call | ||||
166 | 3 | 600ns | my $self = shift; | ||
167 | 3 | 2µs | 3 | 2µs | my $attr = $self->associated_attribute; # spent 2µs making 3 calls to Class::MOP::Method::Accessor::associated_attribute, avg 700ns/call |
168 | |||||
169 | return sub { | ||||
170 | $attr->set_value($_[0], $_[1]); | ||||
171 | 3 | 11µs | }; | ||
172 | } | ||||
173 | |||||
174 | # spent 484µs (36+449) within Class::MOP::Method::Accessor::_generate_writer_method_inline which was called 3 times, avg 161µs/call:
# 3 times (36µs+449µs) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 161µs/call | ||||
175 | 3 | 800ns | my $self = shift; | ||
176 | 3 | 3µs | 3 | 2µs | my $attr = $self->associated_attribute; # spent 2µs making 3 calls to Class::MOP::Method::Accessor::associated_attribute, avg 633ns/call |
177 | |||||
178 | return try { | ||||
179 | 3 | 10µs | 6 | 377µs | $self->_compile_code([ # spent 329µs making 3 calls to Class::MOP::Method::Generated::_compile_code, avg 110µs/call
# spent 49µs making 3 calls to Class::MOP::Attribute::_inline_set_value, avg 16µs/call |
180 | 'sub {', | ||||
181 | $attr->_inline_set_value('$_[0]', '$_[1]'), | ||||
182 | '}', | ||||
183 | ]); | ||||
184 | } | ||||
185 | catch { | ||||
186 | confess "Could not generate inline writer because : $_"; | ||||
187 | 3 | 62µs | 6 | 6µs | }; # spent 6µs making 3 calls to Try::Tiny::catch, avg 2µs/call
# spent 441µs making 3 calls to Try::Tiny::try, avg 147µs/call, recursion: max depth 1, sum of overlapping time 441µs |
188 | } | ||||
189 | |||||
190 | # spent 86µs (75+11) within Class::MOP::Method::Accessor::_generate_predicate_method which was called 16 times, avg 5µs/call:
# 16 times (75µs+11µs) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 5µs/call | ||||
191 | 16 | 2µs | my $self = shift; | ||
192 | 16 | 10µs | 16 | 11µs | my $attr = $self->associated_attribute; # spent 11µs making 16 calls to Class::MOP::Method::Accessor::associated_attribute, avg 681ns/call |
193 | |||||
194 | return sub { | ||||
195 | 12 | 29µs | 12 | 210µs | $attr->has_value($_[0]) # spent 210µs making 12 calls to Class::MOP::Attribute::has_value, avg 17µs/call |
196 | 16 | 53µs | }; | ||
197 | } | ||||
198 | |||||
199 | # spent 4.92ms (234µs+4.68) within Class::MOP::Method::Accessor::_generate_predicate_method_inline which was called 24 times, avg 205µs/call:
# 16 times (154µs+2.43ms) by Class::MOP::Method::Accessor::_initialize_body at line 90, avg 162µs/call
# 8 times (80µs+2.25ms) by Moose::Meta::Method::Accessor::_generate_predicate_method at line 80 of Moose/Meta/Method/Accessor.pm, avg 291µs/call | ||||
200 | 24 | 4µs | my $self = shift; | ||
201 | 24 | 18µs | 24 | 16µs | my $attr = $self->associated_attribute; # spent 16µs making 24 calls to Class::MOP::Method::Accessor::associated_attribute, avg 683ns/call |
202 | |||||
203 | return try { | ||||
204 | 24 | 77µs | 48 | 4.09ms | $self->_compile_code([ # spent 1.88ms making 8 calls to Moose::Meta::Method::Accessor::_compile_code, avg 235µs/call
# spent 1.78ms making 16 calls to Class::MOP::Method::Generated::_compile_code, avg 111µs/call
# spent 434µs making 24 calls to Class::MOP::Attribute::_inline_has_value, avg 18µs/call |
205 | 'sub {', | ||||
206 | $attr->_inline_has_value('$_[0]'), | ||||
207 | '}', | ||||
208 | ]); | ||||
209 | } | ||||
210 | catch { | ||||
211 | confess "Could not generate inline predicate because : $_"; | ||||
212 | 24 | 136µs | 48 | 49µs | }; # spent 49µs making 24 calls to Try::Tiny::catch, avg 2µs/call
# spent 4.62ms making 24 calls to Try::Tiny::try, avg 192µs/call, recursion: max depth 3, sum of overlapping time 4.62ms |
213 | } | ||||
214 | |||||
215 | sub _generate_clearer_method { | ||||
216 | my $self = shift; | ||||
217 | my $attr = $self->associated_attribute; | ||||
218 | |||||
219 | return sub { | ||||
220 | $attr->clear_value($_[0]) | ||||
221 | }; | ||||
222 | } | ||||
223 | |||||
224 | sub _generate_clearer_method_inline { | ||||
225 | my $self = shift; | ||||
226 | my $attr = $self->associated_attribute; | ||||
227 | |||||
228 | return try { | ||||
229 | $self->_compile_code([ | ||||
230 | 'sub {', | ||||
231 | $attr->_inline_clear_value('$_[0]'), | ||||
232 | '}', | ||||
233 | ]); | ||||
234 | } | ||||
235 | catch { | ||||
236 | confess "Could not generate inline clearer because : $_"; | ||||
237 | }; | ||||
238 | } | ||||
239 | |||||
240 | 1 | 3µs | 1; | ||
241 | |||||
242 | # ABSTRACT: Method Meta Object for accessors | ||||
243 | |||||
244 | __END__ |