← 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:10:11 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Moose/Meta/Method/Accessor/Native/Writer.pm
StatementsExecuted 728 statements in 16.2ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
10113.50ms32.7msMoose::Meta::Method::Accessor::Native::Writer::::_writer_coreMoose::Meta::Method::Accessor::Native::Writer::_writer_core
42222.79ms8.61msMoose::Meta::Method::Accessor::Native::Writer::::_is_root_typeMoose::Meta::Method::Accessor::Native::Writer::_is_root_type
30422.55ms11.4msMoose::Meta::Method::Accessor::Native::Writer::::_constraint_must_be_checkedMoose::Meta::Method::Accessor::Native::Writer::_constraint_must_be_checked
10111.51ms40.0msMoose::Meta::Method::Accessor::Native::Writer::::_generate_methodMoose::Meta::Method::Accessor::Native::Writer::_generate_method
1011965µs9.66msMoose::Meta::Method::Accessor::Native::Writer::::_inline_set_new_valueMoose::Meta::Method::Accessor::Native::Writer::_inline_set_new_value
1011661µs1.03msMoose::Meta::Method::Accessor::Native::Writer::::_inline_get_is_lvalueMoose::Meta::Method::Accessor::Native::Writer::_inline_get_is_lvalue
1011284µs7.26msMoose::Meta::Method::Accessor::Native::Writer::::_inline_copy_native_valueMoose::Meta::Method::Accessor::Native::Writer::_inline_copy_native_value
1221261µs5.14msMoose::Meta::Method::Accessor::Native::Writer::::_value_needs_copyMoose::Meta::Method::Accessor::Native::Writer::_value_needs_copy
1221218µs218µsMoose::Meta::Method::Accessor::Native::Writer::::_return_valueMoose::Meta::Method::Accessor::Native::Writer::_return_value
611176µs2.42msMoose::Meta::Method::Accessor::Native::Writer::::_inline_tc_codeMoose::Meta::Method::Accessor::Native::Writer::_inline_tc_code
1011100µs100µsMoose::Meta::Method::Accessor::Native::Writer::::_inline_capture_return_valueMoose::Meta::Method::Accessor::Native::Writer::_inline_capture_return_value
11180µs98µsMoose::Meta::Method::Accessor::Native::Writer::::BEGIN@3Moose::Meta::Method::Accessor::Native::Writer::BEGIN@3
81172µs72µsMoose::Meta::Method::Accessor::Native::Writer::::_inline_process_argumentsMoose::Meta::Method::Accessor::Native::Writer::_inline_process_arguments
81168µs68µsMoose::Meta::Method::Accessor::Native::Writer::::_inline_check_argumentsMoose::Meta::Method::Accessor::Native::Writer::_inline_check_arguments
11158µs16.5msMoose::Meta::Method::Accessor::Native::Writer::::BEGIN@12Moose::Meta::Method::Accessor::Native::Writer::BEGIN@12
61153µs53µsMoose::Meta::Method::Accessor::Native::Writer::::_inline_coerce_new_valuesMoose::Meta::Method::Accessor::Native::Writer::_inline_coerce_new_values
11150µs822µsMoose::Meta::Method::Accessor::Native::Writer::::BEGIN@187Moose::Meta::Method::Accessor::Native::Writer::BEGIN@187
11139µs106µsMoose::Meta::Method::Accessor::Native::Writer::::BEGIN@4Moose::Meta::Method::Accessor::Native::Writer::BEGIN@4
11139µs249µsMoose::Meta::Method::Accessor::Native::Writer::::BEGIN@6Moose::Meta::Method::Accessor::Native::Writer::BEGIN@6
0000s0sMoose::Meta::Method::Accessor::Native::Writer::::__ANON__[:110]Moose::Meta::Method::Accessor::Native::Writer::__ANON__[:110]
0000s0sMoose::Meta::Method::Accessor::Native::Writer::::__ANON__[:154]Moose::Meta::Method::Accessor::Native::Writer::__ANON__[:154]
0000s0sMoose::Meta::Method::Accessor::Native::Writer::::_inline_check_coercionMoose::Meta::Method::Accessor::Native::Writer::_inline_check_coercion
0000s0sMoose::Meta::Method::Accessor::Native::Writer::::_inline_optimized_set_new_valueMoose::Meta::Method::Accessor::Native::Writer::_inline_optimized_set_new_value
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::Method::Accessor::Native::Writer;
2
33100µs2115µs
# spent 98µs (80+17) within Moose::Meta::Method::Accessor::Native::Writer::BEGIN@3 which was called: # once (80µs+17µs) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 3
use strict;
# spent 98µs making 1 call to Moose::Meta::Method::Accessor::Native::Writer::BEGIN@3 # spent 17µs making 1 call to strict::import
43109µs2173µs
# spent 106µs (39+67) within Moose::Meta::Method::Accessor::Native::Writer::BEGIN@4 which was called: # once (39µs+67µs) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 4
use warnings;
# spent 106µs making 1 call to Moose::Meta::Method::Accessor::Native::Writer::BEGIN@4 # spent 67µs making 1 call to warnings::import
5
63358µs2459µs
# spent 249µs (39+210) within Moose::Meta::Method::Accessor::Native::Writer::BEGIN@6 which was called: # once (39µs+210µs) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 6
use List::MoreUtils qw( any );
# spent 249µs making 1 call to Moose::Meta::Method::Accessor::Native::Writer::BEGIN@6 # spent 210µs making 1 call to Exporter::import
7
814µsour $VERSION = '1.19';
9184µs$VERSION = eval $VERSION;
# spent 11µs executing statements in string eval
1013µsour $AUTHORITY = 'cpan:STEVAN';
11
1233.18ms232.9ms
# spent 16.5ms (58µs+16.4) within Moose::Meta::Method::Accessor::Native::Writer::BEGIN@12 which was called: # once (58µs+16.4ms) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 12
use Moose::Role;
13
14120µs138.4mswith 'Moose::Meta::Method::Accessor::Native';
# spent 38.4ms making 1 call to Moose::Role::with
15
16112µs1326µsrequires '_potential_value';
# spent 326µs making 1 call to Moose::Role::requires
17
18
# spent 40.0ms (1.51+38.5) within Moose::Meta::Method::Accessor::Native::Writer::_generate_method which was called 10 times, avg 4.00ms/call: # 10 times (1.51ms+38.5ms) by Moose::Meta::Method::Accessor::Native::_initialize_body at line 48 of Moose/Meta/Method/Accessor/Native.pm, avg 4.00ms/call
sub _generate_method {
191101.35ms my $self = shift;
20
21 my $inv = '$self';
22
23104.99ms my $slot_access = $self->_inline_get($inv);
# spent 889µs making 2 calls to Class::MOP::Class::__ANON__::SERIAL::7::_inline_get, avg 445µs/call # spent 612µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::12::_inline_get # spent 538µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::21::_inline_get # spent 523µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::20::_inline_get # spent 510µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::13::_inline_get # spent 494µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::17::_inline_get # spent 478µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::18::_inline_get # spent 474µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::10::_inline_get # spent 473µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::9::_inline_get
24
25 my $code = 'sub {';
26
271096µs $code .= "\n" . $self->_inline_pre_body(@_);
# spent 96µs making 10 calls to Moose::Meta::Method::Accessor::_inline_pre_body, avg 10µs/call
28
29 $code .= "\n" . 'my $self = shift;';
30
3110603µs $code .= "\n" . $self->_inline_curried_arguments;
# spent 603µs making 10 calls to Moose::Meta::Method::Accessor::Native::_inline_curried_arguments, avg 60µs/call
32
331032.7ms $code .= $self->_writer_core( $inv, $slot_access );
# spent 32.7ms making 10 calls to Moose::Meta::Method::Accessor::Native::Writer::_writer_core, avg 3.27ms/call
34
3510100µs $code .= "\n" . $self->_inline_post_body(@_);
# spent 100µs making 10 calls to Moose::Meta::Method::Accessor::_inline_post_body, avg 10µs/call
36
37 $code .= "\n}";
38
39 return $code;
40}
41
42
# spent 32.7ms (3.50+29.2) within Moose::Meta::Method::Accessor::Native::Writer::_writer_core which was called 10 times, avg 3.27ms/call: # 10 times (3.50ms+29.2ms) by Moose::Meta::Method::Accessor::Native::Writer::_generate_method at line 33, avg 3.27ms/call
sub _writer_core {
431702.77ms my ( $self, $inv, $slot_access ) = @_;
44
45 my $code = q{};
46
47102.03ms $code .= "\n" . $self->_inline_check_argument_count;
# spent 1.52ms making 8 calls to Moose::Meta::Method::Accessor::Native::_inline_check_argument_count, avg 189µs/call # spent 519µs making 2 calls to Class::MOP::Class::__ANON__::SERIAL::7::_inline_check_argument_count, avg 259µs/call
481097µs $code .= "\n" . $self->_inline_process_arguments( $inv, $slot_access );
4910225µs $code .= "\n" . $self->_inline_check_arguments('for writer');
# spent 157µs making 2 calls to Moose::Meta::Method::Accessor::Native::Hash::set::_inline_check_arguments, avg 79µs/call # spent 68µs making 8 calls to Moose::Meta::Method::Accessor::Native::Writer::_inline_check_arguments, avg 8µs/call
50
5110730µs $code .= "\n" . $self->_inline_check_lazy($inv);
# spent 730µs making 10 calls to Moose::Meta::Method::Accessor::_inline_check_lazy, avg 73µs/call
52
5310149µs my $potential_value = $self->_potential_value($slot_access);
54
5510190µs if ( $self->_return_value($slot_access) ) {
56 # some writers will save the return value in this variable when they
57 # generate the potential value.
58 $code .= "\n" . 'my @return;';
59 }
60
61 # This is only needed by collections.
6210531µs $code .= "\n" . $self->_inline_coerce_new_values;
63107.26ms $code .= "\n" . $self->_inline_copy_native_value( \$potential_value );
# spent 7.26ms making 10 calls to Moose::Meta::Method::Accessor::Native::Writer::_inline_copy_native_value, avg 726µs/call
64106.30ms $code .= "\n"
# spent 2.42ms making 6 calls to Moose::Meta::Method::Accessor::Native::Writer::_inline_tc_code, avg 404µs/call # spent 2.07ms making 2 calls to Class::MOP::Class::__ANON__::SERIAL::7::_inline_tc_code, avg 1.04ms/call # spent 974µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::18::_inline_tc_code # spent 836µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::17::_inline_tc_code
65 . $self->_inline_tc_code(
66 $potential_value
67 );
68
69101.04ms $code .= "\n" . $self->_inline_get_old_value_for_trigger($inv);
7010100µs $code .= "\n" . $self->_inline_capture_return_value($slot_access);
# spent 100µs making 10 calls to Moose::Meta::Method::Accessor::Native::Writer::_inline_capture_return_value, avg 10µs/call
71109.66ms $code .= "\n"
# spent 9.66ms making 10 calls to Moose::Meta::Method::Accessor::Native::Writer::_inline_set_new_value, avg 966µs/call
72 . $self->_inline_set_new_value(
73 $inv,
74 $potential_value,
75 $slot_access,
76 ) . ';';
7710764µs $code .= "\n" . $self->_inline_trigger( $inv, $slot_access, '@old' );
# spent 764µs making 10 calls to Moose::Meta::Method::Accessor::_inline_trigger, avg 76µs/call
7810146µs $code .= "\n" . $self->_return_value( $slot_access, 'for writer' );
79
80 return $code;
81}
82
838106µs
# spent 72µs within Moose::Meta::Method::Accessor::Native::Writer::_inline_process_arguments which was called 8 times, avg 9µs/call: # 8 times (72µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 48, avg 9µs/call
sub _inline_process_arguments {q{}}
84
85899µs
# spent 68µs within Moose::Meta::Method::Accessor::Native::Writer::_inline_check_arguments which was called 8 times, avg 8µs/call: # 8 times (68µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 49, avg 8µs/call
sub _inline_check_arguments {q{}}
86
87676µs
# spent 53µs within Moose::Meta::Method::Accessor::Native::Writer::_inline_coerce_new_values which was called 6 times, avg 9µs/call: # 6 times (53µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 62, avg 9µs/call
sub _inline_coerce_new_values {q{}}
88
89
# spent 5.14ms (261µs+4.88) within Moose::Meta::Method::Accessor::Native::Writer::_value_needs_copy which was called 12 times, avg 428µs/call: # 6 times (130µs+2.58ms) by Moose::Meta::Method::Accessor::Native::Writer::_inline_copy_native_value at line 116, avg 452µs/call # 6 times (130µs+2.30ms) by Moose::Meta::Method::Accessor::Native::Writer::_inline_set_new_value at line 161, avg 405µs/call
sub _value_needs_copy {
9024266µs my $self = shift;
91
92124.88ms return $self->_constraint_must_be_checked;
# spent 4.88ms making 12 calls to Moose::Meta::Method::Accessor::Native::Writer::_constraint_must_be_checked, avg 407µs/call
93}
94
95
# spent 11.4ms (2.55+8.89) within Moose::Meta::Method::Accessor::Native::Writer::_constraint_must_be_checked which was called 30 times, avg 381µs/call: # 12 times (1.22ms+3.66ms) by Moose::Meta::Method::Accessor::Native::Writer::_value_needs_copy at line 92, avg 407µs/call # 8 times (589µs+2.44ms) by Class::MOP::Class:::around at line 57 of Moose/Meta/Method/Accessor/Native/Collection.pm, avg 379µs/call # 6 times (467µs+1.78ms) by Moose::Meta::Method::Accessor::Native::Writer::_inline_tc_code at line 128, avg 374µs/call # 4 times (271µs+1.01ms) by Class::MOP::Class:::around at line 65 of Moose/Meta/Method/Accessor/Native/Collection.pm, avg 320µs/call
sub _constraint_must_be_checked {
96902.13ms my $self = shift;
97
9830338µs my $attr = $self->associated_attribute;
# spent 338µs making 30 calls to Class::MOP::Method::Accessor::associated_attribute, avg 11µs/call
99
1001088.55ms return $attr->has_type_constraint
# spent 7.50ms making 30 calls to Moose::Meta::Method::Accessor::Native::Writer::_is_root_type, avg 250µs/call # spent 423µs making 30 calls to Moose::Meta::Mixin::AttributeCore::type_constraint, avg 14µs/call # spent 376µs making 30 calls to Moose::Meta::Mixin::AttributeCore::has_type_constraint, avg 13µs/call # spent 245µs making 18 calls to Moose::Meta::Mixin::AttributeCore::should_coerce, avg 14µs/call
101 && ( !$self->_is_root_type( $attr->type_constraint )
102 || ( $attr->should_coerce && $attr->type_constraint->has_coercion ) );
103}
104
105
# spent 8.61ms (2.79+5.82) within Moose::Meta::Method::Accessor::Native::Writer::_is_root_type which was called 42 times, avg 205µs/call: # 30 times (2.10ms+5.41ms) by Moose::Meta::Method::Accessor::Native::Writer::_constraint_must_be_checked at line 100, avg 250µs/call # 12 times (692µs+410µs) by Moose::Meta::Method::Accessor::Native::Collection::_check_new_members_only at line 96 of Moose/Meta/Method/Accessor/Native/Collection.pm, avg 92µs/call
sub _is_root_type {
1061262.05ms my ($self, $type) = @_;
107
108424.74ms my $name = $type->name();
# spent 4.60ms making 30 calls to MooseX::Types::TypeDecorator::AUTOLOAD, avg 153µs/call # spent 147µs making 12 calls to Moose::Meta::TypeConstraint::name, avg 12µs/call
109
110481.16ms841.07ms return any { $name eq $_ } @{ $self->root_types };
# spent 629µs making 42 calls to List::MoreUtils::any, avg 15µs/call # spent 445µs making 42 calls to Moose::Meta::Method::Accessor::Native::root_types, avg 11µs/call
111}
112
113
# spent 7.26ms (284µs+6.98) within Moose::Meta::Method::Accessor::Native::Writer::_inline_copy_native_value which was called 10 times, avg 726µs/call: # 10 times (284µs+6.98ms) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 63, avg 726µs/call
sub _inline_copy_native_value {
11420263µs my ( $self, $potential_ref ) = @_;
115
116106.98ms return q{} unless $self->_value_needs_copy;
# spent 2.71ms making 6 calls to Moose::Meta::Method::Accessor::Native::Writer::_value_needs_copy, avg 452µs/call # spent 2.44ms making 2 calls to Class::MOP::Class::__ANON__::SERIAL::7::_value_needs_copy, avg 1.22ms/call # spent 952µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::18::_value_needs_copy # spent 871µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::17::_value_needs_copy
117
118 my $code = "my \$potential = ${$potential_ref};";
119
120 ${$potential_ref} = '$potential';
121
122 return $code;
123}
124
125
# spent 2.42ms (176µs+2.25) within Moose::Meta::Method::Accessor::Native::Writer::_inline_tc_code which was called 6 times, avg 404µs/call: # 6 times (176µs+2.25ms) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 64, avg 404µs/call
sub _inline_tc_code {
12612184µs my ( $self, $potential_value ) = @_;
127
12862.25ms return q{} unless $self->_constraint_must_be_checked;
# spent 2.25ms making 6 calls to Moose::Meta::Method::Accessor::Native::Writer::_constraint_must_be_checked, avg 374µs/call
129
130 return $self->_inline_check_coercion($potential_value) . "\n"
131 . $self->_inline_check_constraint($potential_value);
132}
133
134sub _inline_check_coercion {
135 my ( $self, $value ) = @_;
136
137 my $attr = $self->associated_attribute;
138
139 return q{}
140 unless $attr->should_coerce
141 && $attr->type_constraint->has_coercion;
142
143 # We want to break the aliasing in @_ in case the coercion tries to make a
144 # destructive change to an array member.
145 return "$value = \$type_constraint_obj->coerce($value);";
146}
147
148override _inline_check_constraint => sub {
149 my ( $self, $value, $for_lazy ) = @_;
150
151 return q{} unless $for_lazy || $self->_constraint_must_be_checked;
152
153 return super();
154121µs1515µs};
# spent 515µs making 1 call to Moose::Role::override
155
15610143µs
# spent 100µs within Moose::Meta::Method::Accessor::Native::Writer::_inline_capture_return_value which was called 10 times, avg 10µs/call: # 10 times (100µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 70, avg 10µs/call
sub _inline_capture_return_value { return q{} }
157
158
# spent 9.66ms (965µs+8.70) within Moose::Meta::Method::Accessor::Native::Writer::_inline_set_new_value which was called 10 times, avg 966µs/call: # 10 times (965µs+8.70ms) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 71, avg 966µs/call
sub _inline_set_new_value {
15930769µs my $self = shift;
160
161308.39ms return $self->_inline_store(@_)
# spent 2.43ms making 6 calls to Moose::Meta::Method::Accessor::Native::Writer::_value_needs_copy, avg 405µs/call # spent 1.63ms making 2 calls to Class::MOP::Class::__ANON__::SERIAL::7::_value_needs_copy, avg 815µs/call # spent 1.61ms making 10 calls to Moose::Meta::Method::Accessor::Native::_slot_access_can_be_inlined, avg 161µs/call # spent 1.03ms making 10 calls to Moose::Meta::Method::Accessor::Native::Writer::_inline_get_is_lvalue, avg 103µs/call # spent 859µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::18::_value_needs_copy # spent 819µs making 1 call to Class::MOP::Class::__ANON__::SERIAL::17::_value_needs_copy
162 if $self->_value_needs_copy
163 || !$self->_slot_access_can_be_inlined
164 || !$self->_inline_get_is_lvalue;
165
16610313µs return $self->_inline_optimized_set_new_value(@_);
167}
168
169
# spent 1.03ms (661µs+372µs) within Moose::Meta::Method::Accessor::Native::Writer::_inline_get_is_lvalue which was called 10 times, avg 103µs/call: # 10 times (661µs+372µs) by Moose::Meta::Method::Accessor::Native::Writer::_inline_set_new_value at line 161, avg 103µs/call
sub _inline_get_is_lvalue {
17020512µs my $self = shift;
171
17240372µs return $self->associated_attribute->associated_class->instance_metaclass->inline_get_is_lvalue;
# spent 106µs making 10 calls to Class::MOP::Class::instance_metaclass, avg 11µs/call # spent 91µs making 10 calls to Class::MOP::Instance::inline_get_is_lvalue, avg 9µs/call # spent 90µs making 10 calls to Class::MOP::Attribute::associated_class, avg 9µs/call # spent 84µs making 10 calls to Class::MOP::Method::Accessor::associated_attribute, avg 8µs/call
173}
174
175sub _inline_optimized_set_new_value {
176 my $self = shift;
177
178 return $self->_inline_store(@_);
179}
180
181
# spent 218µs within Moose::Meta::Method::Accessor::Native::Writer::_return_value which was called 12 times, avg 18µs/call: # 6 times (128µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 55, avg 21µs/call # 6 times (89µs+0s) by Moose::Meta::Method::Accessor::Native::Writer::_writer_core at line 78, avg 15µs/call
sub _return_value {
18224273µs my ( $self, $slot_access ) = @_;
183
184 return $slot_access;
185}
186
1873124µs21.59ms
# spent 822µs (50+773) within Moose::Meta::Method::Accessor::Native::Writer::BEGIN@187 which was called: # once (50µs+773µs) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 187
no Moose::Role;
188
189162µs1;