| 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 | Class::MOP::Method::Accessor::_initialize_body |
| 280 | 3 | 3 | 5.35ms | 19.2ms | Class::MOP::Method::Accessor::_new |
| 249 | 2 | 2 | 4.71ms | 123ms | Class::MOP::Method::Accessor::new |
| 58 | 2 | 2 | 516µs | 20.9ms | Class::MOP::Method::Accessor::_generate_reader_method_inline |
| 44 | 2 | 2 | 403µs | 32.1ms | Class::MOP::Method::Accessor::_generate_accessor_method_inline |
| 53 | 1 | 1 | 264µs | 301µs | Class::MOP::Method::Accessor::_generate_reader_method |
| 24 | 2 | 2 | 234µs | 4.92ms | Class::MOP::Method::Accessor::_generate_predicate_method_inline |
| 22 | 1 | 1 | 112µs | 127µs | Class::MOP::Method::Accessor::_generate_accessor_method |
| 16 | 1 | 1 | 75µs | 86µs | Class::MOP::Method::Accessor::_generate_predicate_method |
| 53 | 1 | 1 | 64µs | 64µs | Class::MOP::Method::Accessor::_inline_throw_error |
| 3 | 1 | 1 | 36µs | 484µs | Class::MOP::Method::Accessor::_generate_writer_method_inline |
| 3 | 1 | 1 | 17µs | 19µs | Class::MOP::Method::Accessor::_generate_writer_method |
| 1 | 1 | 1 | 8µs | 8µs | Class::MOP::Method::Accessor::BEGIN@3 |
| 1 | 1 | 1 | 7µs | 10µs | Class::MOP::Method::Accessor::BEGIN@11 |
| 1 | 1 | 1 | 6µs | 41µs | Class::MOP::Method::Accessor::BEGIN@15 |
| 1 | 1 | 1 | 6µs | 1.91ms | Class::MOP::Method::Accessor::BEGIN@17 |
| 1 | 1 | 1 | 6µs | 29µs | Class::MOP::Method::Accessor::BEGIN@14 |
| 1 | 1 | 1 | 6µs | 17µs | Class::MOP::Method::Accessor::BEGIN@10 |
| 1 | 1 | 1 | 5µs | 26µs | Class::MOP::Method::Accessor::BEGIN@13 |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:104] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:120] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:123] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:134] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:154] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:157] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:171] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:184] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:187] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:196] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:209] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:212] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:221] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:234] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::__ANON__[:237] |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::_generate_clearer_method |
| 0 | 0 | 0 | 0s | 0s | Class::MOP::Method::Accessor::_generate_clearer_method_inline |
| 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__ |