← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 22:00:36 2010
Reported on Wed Nov 17 22:10:02 2010

Filename/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP/Class/Immutable/Trait.pm
StatementsExecuted 4960 statements in 41.6ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
6211890µs890µsClass::MOP::Class::Immutable::Trait::::_get_mutable_metaclass_nameClass::MOP::Class::Immutable::Trait::_get_mutable_metaclass_name
11173µs91µsClass::MOP::Class::Immutable::Trait::::BEGIN@3Class::MOP::Class::Immutable::Trait::BEGIN@3
11164µs161µsClass::MOP::Class::Immutable::Trait::::BEGIN@36Class::MOP::Class::Immutable::Trait::BEGIN@36
11146µs118µsClass::MOP::Class::Immutable::Trait::::BEGIN@4Class::MOP::Class::Immutable::Trait::BEGIN@4
11138µs201µsClass::MOP::Class::Immutable::Trait::::BEGIN@8Class::MOP::Class::Immutable::Trait::BEGIN@8
11138µs228µsClass::MOP::Class::Immutable::Trait::::BEGIN@9Class::MOP::Class::Immutable::Trait::BEGIN@9
11123µs23µsClass::MOP::Class::Immutable::Trait::::BEGIN@6Class::MOP::Class::Immutable::Trait::BEGIN@6
0000s0sClass::MOP::Class::Immutable::Trait::::__ANON__[:37]Class::MOP::Class::Immutable::Trait::__ANON__[:37]
0000s0sClass::MOP::Class::Immutable::Trait::::_immutable_cannot_callClass::MOP::Class::Immutable::Trait::_immutable_cannot_call
0000s0sClass::MOP::Class::Immutable::Trait::::_immutable_metaclassClass::MOP::Class::Immutable::Trait::_immutable_metaclass
0000s0sClass::MOP::Class::Immutable::Trait::::_method_mapClass::MOP::Class::Immutable::Trait::_method_map
0000s0sClass::MOP::Class::Immutable::Trait::::class_precedence_listClass::MOP::Class::Immutable::Trait::class_precedence_list
0000s0sClass::MOP::Class::Immutable::Trait::::get_all_attributesClass::MOP::Class::Immutable::Trait::get_all_attributes
0000s0sClass::MOP::Class::Immutable::Trait::::get_all_method_namesClass::MOP::Class::Immutable::Trait::get_all_method_names
0000s0sClass::MOP::Class::Immutable::Trait::::get_all_methodsClass::MOP::Class::Immutable::Trait::get_all_methods
0000s0sClass::MOP::Class::Immutable::Trait::::get_meta_instanceClass::MOP::Class::Immutable::Trait::get_meta_instance
0000s0sClass::MOP::Class::Immutable::Trait::::is_immutableClass::MOP::Class::Immutable::Trait::is_immutable
0000s0sClass::MOP::Class::Immutable::Trait::::is_mutableClass::MOP::Class::Immutable::Trait::is_mutable
0000s0sClass::MOP::Class::Immutable::Trait::::linearized_isaClass::MOP::Class::Immutable::Trait::linearized_isa
0000s0sClass::MOP::Class::Immutable::Trait::::superclassesClass::MOP::Class::Immutable::Trait::superclasses
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::Class::Immutable::Trait;
2
33112µs2109µs
# spent 91µs (73+18) within Class::MOP::Class::Immutable::Trait::BEGIN@3 which was called: # once (73µs+18µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 3
use strict;
# spent 91µs making 1 call to Class::MOP::Class::Immutable::Trait::BEGIN@3 # spent 18µs making 1 call to strict::import
43104µs2190µs
# spent 118µs (46+72) within Class::MOP::Class::Immutable::Trait::BEGIN@4 which was called: # once (46µs+72µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 4
use warnings;
# spent 118µs making 1 call to Class::MOP::Class::Immutable::Trait::BEGIN@4 # spent 72µs making 1 call to warnings::import
5
63123µs123µs
# spent 23µs within Class::MOP::Class::Immutable::Trait::BEGIN@6 which was called: # once (23µs+0s) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 6
use MRO::Compat;
# spent 23µs making 1 call to Class::MOP::Class::Immutable::Trait::BEGIN@6
7
83110µs2363µs
# spent 201µs (38+163) within Class::MOP::Class::Immutable::Trait::BEGIN@8 which was called: # once (38µs+163µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 8
use Carp 'confess';
# spent 201µs making 1 call to Class::MOP::Class::Immutable::Trait::BEGIN@8 # spent 163µs making 1 call to Exporter::import
93988µs2418µs
# spent 228µs (38+190) within Class::MOP::Class::Immutable::Trait::BEGIN@9 which was called: # once (38µs+190µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 9
use Scalar::Util 'blessed', 'weaken';
# spent 228µs making 1 call to Class::MOP::Class::Immutable::Trait::BEGIN@9 # spent 190µs making 1 call to Exporter::import
10
1115µsour $VERSION = '1.11';
12165µs$VERSION = eval $VERSION;
# spent 12µs executing statements in string eval
1313µsour $AUTHORITY = 'cpan:STEVAN';
14
15# the original class of the metaclass instance
16621.02ms
# spent 890µs within Class::MOP::Class::Immutable::Trait::_get_mutable_metaclass_name which was called 62 times, avg 14µs/call: # 62 times (890µs+0s) by Class::MOP::Class::_real_ref_name at line 126 of Class/MOP/Class.pm, avg 14µs/call
sub _get_mutable_metaclass_name { $_[0]{__immutable}{original_class} }
17
18sub is_mutable { 0 }
1962791µssub is_immutable { 1 }
20
21sub _immutable_metaclass { ref $_[1] }
22
23sub superclasses {
2472407µs my $orig = shift;
25 my $self = shift;
26 confess "This method is read-only" if @_;
27181.73ms $self->$orig;
# spent 1.73ms making 18 calls to Class::MOP::Class::superclasses, avg 96µs/call
28}
29
30sub _immutable_cannot_call {
31 my $name = shift;
32 Carp::confess "The '$name' method cannot be called on an immutable instance";
33}
34
3517µsfor my $name (qw/add_method alias_method remove_method add_attribute remove_attribute remove_package_symbol add_package_symbol/) {
3631.62ms2259µs
# spent 161µs (64+98) within Class::MOP::Class::Immutable::Trait::BEGIN@36 which was called: # once (64µs+98µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 36
no strict 'refs';
# spent 161µs making 1 call to Class::MOP::Class::Immutable::Trait::BEGIN@36 # spent 98µs making 1 call to strict::unimport
377136µs *{__PACKAGE__."::$name"} = sub { _immutable_cannot_call($name) };
38}
39
40sub class_precedence_list {
412192.01ms my $orig = shift;
42 my $self = shift;
43180s @{ $self->{__immutable}{class_precedence_list}
# spent 15.1ms making 18 calls to Class::MOP::Class::class_precedence_list, avg 837µs/call, recursion: max depth 4, sum of overlapping time 15.1ms
44 ||= [ $self->$orig ] };
45}
46
47sub linearized_isa {
482372.22ms my $orig = shift;
49 my $self = shift;
5018873µs @{ $self->{__immutable}{linearized_isa} ||= [ $self->$orig ] };
# spent 873µs making 18 calls to Class::MOP::Class::linearized_isa, avg 49µs/call
51}
52
53sub get_all_methods {
54 my $orig = shift;
55 my $self = shift;
56 @{ $self->{__immutable}{get_all_methods} ||= [ $self->$orig ] };
57}
58
59sub get_all_method_names {
60 my $orig = shift;
61 my $self = shift;
62 @{ $self->{__immutable}{get_all_method_names} ||= [ $self->$orig ] };
63}
64
65sub get_all_attributes {
667476.85ms my $orig = shift;
67 my $self = shift;
68189.29ms @{ $self->{__immutable}{get_all_attributes} ||= [ $self->$orig ] };
# spent 9.29ms making 18 calls to Class::MOP::Class::get_all_attributes, avg 516µs/call
69}
70
71sub get_meta_instance {
72175812.3ms my $orig = shift;
73 my $self = shift;
742413.0ms $self->{__immutable}{get_meta_instance} ||= $self->$orig;
# spent 13.0ms making 24 calls to Class::MOP::Class::get_meta_instance, avg 540µs/call
75}
76
77sub _method_map {
78177312.7ms my $orig = shift;
79 my $self = shift;
8031774µs $self->{__immutable}{_method_map} ||= $self->$orig;
# spent 726µs making 22 calls to Class::MOP::Mixin::HasMethods::_method_map, avg 33µs/call # spent 48µs making 9 calls to Class::MOP::Method::body, avg 5µs/call
81}
82
83118µs1;
84
85__END__