← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 21:42:38 2010
Reported on Wed Nov 17 22:04:43 2010

Filename/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP/Mixin/AttributeCore.pm
StatementsExecuted 8536 statements in 97.1ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
9455521.6ms31.5msClass::MOP::Mixin::AttributeCore::::defaultClass::MOP::Mixin::AttributeCore::default
6653310.5ms10.5msClass::MOP::Mixin::AttributeCore::::is_default_a_coderefClass::MOP::Mixin::AttributeCore::is_default_a_coderef
1113.65ms5.61msClass::MOP::Mixin::AttributeCore::::BEGIN@12Class::MOP::Mixin::AttributeCore::BEGIN@12
2311508µs751µsClass::MOP::Mixin::AttributeCore::::has_read_methodClass::MOP::Mixin::AttributeCore::has_read_method
11161µs78µsClass::MOP::Mixin::AttributeCore::::BEGIN@3Class::MOP::Mixin::AttributeCore::BEGIN@3
11141µs199µsClass::MOP::Mixin::AttributeCore::::BEGIN@10Class::MOP::Mixin::AttributeCore::BEGIN@10
11137µs104µsClass::MOP::Mixin::AttributeCore::::BEGIN@4Class::MOP::Mixin::AttributeCore::BEGIN@4
0000s0sClass::MOP::Mixin::AttributeCore::::has_write_methodClass::MOP::Mixin::AttributeCore::has_write_method
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Class::MOP::Mixin::AttributeCore;
2
3391µs296µs
# spent 78µs (61+18) within Class::MOP::Mixin::AttributeCore::BEGIN@3 which was called: # once (61µs+18µs) by Class::MOP::BEGIN@16 at line 3
use strict;
# spent 78µs making 1 call to Class::MOP::Mixin::AttributeCore::BEGIN@3 # spent 18µs making 1 call to strict::import
43265µs2172µs
# spent 104µs (37+68) within Class::MOP::Mixin::AttributeCore::BEGIN@4 which was called: # once (37µs+68µs) by Class::MOP::BEGIN@16 at line 4
use warnings;
# spent 104µs making 1 call to Class::MOP::Mixin::AttributeCore::BEGIN@4 # spent 68µs making 1 call to warnings::import
5
614µsour $VERSION = '1.11';
7170µs$VERSION = eval $VERSION;
# spent 10µs executing statements in string eval
813µsour $AUTHORITY = 'cpan:STEVAN';
9
103119µs2357µs
# spent 199µs (41+158) within Class::MOP::Mixin::AttributeCore::BEGIN@10 which was called: # once (41µs+158µs) by Class::MOP::BEGIN@16 at line 10
use Scalar::Util 'blessed';
# spent 199µs making 1 call to Class::MOP::Mixin::AttributeCore::BEGIN@10 # spent 158µs making 1 call to Exporter::import
11
1231.84ms27.23ms
# spent 5.61ms (3.65+1.96) within Class::MOP::Mixin::AttributeCore::BEGIN@12 which was called: # once (3.65ms+1.96ms) by Class::MOP::BEGIN@16 at line 12
use base 'Class::MOP::Mixin';
# spent 5.61ms making 1 call to Class::MOP::Mixin::AttributeCore::BEGIN@12 # spent 1.62ms making 1 call to base::import
13
143084.67mssub has_accessor { defined $_[0]->{'accessor'} }
153314.86mssub has_reader { defined $_[0]->{'reader'} }
163084.80mssub has_writer { defined $_[0]->{'writer'} }
173084.61mssub has_predicate { defined $_[0]->{'predicate'} }
183084.27mssub has_clearer { defined $_[0]->{'clearer'} }
193204.21mssub has_builder { defined $_[0]->{'builder'} }
2021274µssub has_init_arg { defined $_[0]->{'init_arg'} }
214536.09mssub has_default { exists $_[0]->{'default'} }
22158922.3mssub has_initializer { defined $_[0]->{'initializer'} }
23sub has_insertion_order { defined $_[0]->{'insertion_order'} }
24
252543.59mssub _set_insertion_order { $_[0]->{'insertion_order'} = $_[1] }
26
2723432µs23244µs
# spent 751µs (508+244) within Class::MOP::Mixin::AttributeCore::has_read_method which was called 23 times, avg 33µs/call: # 23 times (508µs+244µs) by Moose::Meta::Method::Delegation::_get_delegate_accessor at line 125 of Moose/Meta/Method/Delegation.pm, avg 33µs/call
sub has_read_method { $_[0]->has_reader || $_[0]->has_accessor }
# spent 244µs making 23 calls to Class::MOP::Mixin::AttributeCore::has_reader, avg 11µs/call
28sub has_write_method { $_[0]->has_writer || $_[0]->has_accessor }
29
30
# spent 10.5ms within Class::MOP::Mixin::AttributeCore::is_default_a_coderef which was called 665 times, avg 16µs/call: # 492 times (7.13ms+0s) by Class::MOP::Mixin::AttributeCore::default at line 43, avg 14µs/call # 123 times (2.28ms+0s) by Class::MOP::Class::_inline_default_value at line 721 of Class/MOP/Class.pm, avg 19µs/call # 50 times (1.05ms+0s) by Class::MOP::Attribute::new at line 47 of Class/MOP/Attribute.pm, avg 21µs/call
sub is_default_a_coderef {
31 # Uber hack because it is called from CMOP::Attribute constructor as
32 # $class->is_default_a_coderef(\%options)
33174113.4ms my ($value) = ref $_[0] ? $_[0]->{'default'} : $_[1]->{'default'};
34
35 return unless ref($value);
36
37 return ref($value) eq 'CODE'
38 || ( blessed($value) && $value->isa('Class::MOP::Method') );
39}
40
41
# spent 31.5ms (21.6+9.95) within Class::MOP::Mixin::AttributeCore::default which was called 945 times, avg 33µs/call: # 483 times (15.0ms+9.83ms) by Class::MOP::Attribute::initialize_instance_slot at line 115 of Class/MOP/Attribute.pm, avg 51µs/call # 267 times (3.44ms+0s) by Class::MOP::Method::Constructor::_eval_environment at line 97 of Class/MOP/Method/Constructor.pm, avg 13µs/call # 111 times (1.59ms+0s) by Moose::Meta::Method::Constructor::_eval_environment at line 60 of Moose/Meta/Method/Constructor.pm, avg 14µs/call # 75 times (1.29ms+0s) by Class::MOP::Class::_immutable_metaclass at line 1368 of Class/MOP/Class.pm, avg 17µs/call # 9 times (256µs+119µs) by Moose::Meta::Attribute::initialize_instance_slot at line 477 of Moose/Meta/Attribute.pm, avg 42µs/call
sub default {
42255621.2ms my ( $self, $instance ) = @_;
437719.95ms if ( defined $instance && $self->is_default_a_coderef ) {
# spent 7.13ms making 492 calls to Class::MOP::Mixin::AttributeCore::is_default_a_coderef, avg 14µs/call # spent 394µs making 34 calls to Moose::Meta::Class::__ANON__[Moose/Meta/Class.pm:40], avg 12µs/call # spent 389µs making 34 calls to Class::MOP::__ANON__[Class/MOP.pm:337], avg 11µs/call # spent 359µs making 34 calls to Moose::Meta::Class::__ANON__[Moose/Meta/Class.pm:35], avg 11µs/call # spent 335µs making 34 calls to Class::MOP::__ANON__[Class/MOP.pm:234], avg 10µs/call # spent 335µs making 34 calls to Class::MOP::__ANON__[Class/MOP.pm:192], avg 10µs/call # spent 321µs making 34 calls to Class::MOP::__ANON__[Class/MOP.pm:276], avg 9µs/call # spent 317µs making 34 calls to Class::MOP::__ANON__[Class/MOP.pm:321], avg 9µs/call # spent 296µs making 34 calls to Class::MOP::__ANON__[Class/MOP.pm:302], avg 9µs/call # spent 65µs making 6 calls to Class::MOP::__ANON__[Class/MOP.pm:510], avg 11µs/call # spent 10µs making 1 call to Moose::Meta::TypeConstraint::Registry::__ANON__[Moose/Meta/TypeConstraint/Registry.pm:24]
44 # if the default is a CODE ref, then we pass in the instance and
45 # default can return a value based on that instance. Somewhat crude,
46 # but works.
47 return $self->{'default'}->($instance);
48 }
49 $self->{'default'};
50}
51
52111µs1;
53
54__END__