← 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:13:58 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Moose/Meta/Role/Attribute.pm
StatementsExecuted 262 statements in 7.19ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
21111.32ms95.7msMoose::Meta::Role::Attribute::::attribute_for_classMoose::Meta::Role::Attribute::attribute_for_class
24221.14ms1.14msMoose::Meta::Role::Attribute::::newMoose::Meta::Role::Attribute::new
24111.01ms1.41msMoose::Meta::Role::Attribute::::attach_to_roleMoose::Meta::Role::Attribute::attach_to_role
1511804µs1.79msMoose::Meta::Role::Attribute::::cloneMoose::Meta::Role::Attribute::clone
11174µs92µsMoose::Meta::Role::Attribute::::BEGIN@3Moose::Meta::Role::Attribute::BEGIN@3
11149µs122µsMoose::Meta::Role::Attribute::::BEGIN@4Moose::Meta::Role::Attribute::BEGIN@4
11140µs300µsMoose::Meta::Role::Attribute::::BEGIN@13Moose::Meta::Role::Attribute::BEGIN@13
11139µs199µsMoose::Meta::Role::Attribute::::BEGIN@8Moose::Meta::Role::Attribute::BEGIN@8
11138µs203µsMoose::Meta::Role::Attribute::::BEGIN@7Moose::Meta::Role::Attribute::BEGIN@7
11137µs201µsMoose::Meta::Role::Attribute::::BEGIN@6Moose::Meta::Role::Attribute::BEGIN@6
0000s0sMoose::Meta::Role::Attribute::::__ANON__[:90]Moose::Meta::Role::Attribute::__ANON__[:90]
0000s0sMoose::Meta::Role::Attribute::::is_same_asMoose::Meta::Role::Attribute::is_same_as
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::Role::Attribute;
2
33126µs2110µs
# spent 92µs (74+18) within Moose::Meta::Role::Attribute::BEGIN@3 which was called: # once (74µs+18µs) by Moose::Meta::Role::BEGIN@17 at line 3
use strict;
# spent 92µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@3 # spent 18µs making 1 call to strict::import
43129µs2195µs
# spent 122µs (49+73) within Moose::Meta::Role::Attribute::BEGIN@4 which was called: # once (49µs+73µs) by Moose::Meta::Role::BEGIN@17 at line 4
use warnings;
# spent 122µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@4 # spent 73µs making 1 call to warnings::import
5
63105µs2366µs
# spent 201µs (37+164) within Moose::Meta::Role::Attribute::BEGIN@6 which was called: # once (37µs+164µs) by Moose::Meta::Role::BEGIN@17 at line 6
use Carp 'confess';
# spent 201µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@6 # spent 164µs making 1 call to Exporter::import
73112µs2368µs
# spent 203µs (38+165) within Moose::Meta::Role::Attribute::BEGIN@7 which was called: # once (38µs+165µs) by Moose::Meta::Role::BEGIN@17 at line 7
use List::MoreUtils 'all';
# spent 203µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@7 # spent 165µs making 1 call to Exporter::import
83191µs2360µs
# spent 199µs (39+161) within Moose::Meta::Role::Attribute::BEGIN@8 which was called: # once (39µs+161µs) by Moose::Meta::Role::BEGIN@17 at line 8
use Scalar::Util 'blessed', 'weaken';
# spent 199µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@8 # spent 160µs making 1 call to Exporter::import
9
1015µsour $VERSION = '1.19';
1113µsour $AUTHORITY = 'cpan:STEVAN';
12
1331.42ms2560µs
# spent 300µs (40+260) within Moose::Meta::Role::Attribute::BEGIN@13 which was called: # once (40µs+260µs) by Moose::Meta::Role::BEGIN@17 at line 13
use base 'Moose::Meta::Mixin::AttributeCore';
# spent 300µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@13 # spent 260µs making 1 call to base::import
14
15152µs24.28ms__PACKAGE__->meta->add_attribute(
# spent 2.19ms making 1 call to Class::MOP::Mixin::meta # spent 2.09ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute
16 'metaclass' => (
17 reader => 'metaclass',
18 )
19);
20
21124µs22.14ms__PACKAGE__->meta->add_attribute(
# spent 2.06ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 86µs making 1 call to Class::MOP::Mixin::meta
22 'associated_role' => (
23 reader => 'associated_role',
24 )
25);
26
27124µs22.14ms__PACKAGE__->meta->add_attribute(
# spent 2.06ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 86µs making 1 call to Class::MOP::Mixin::meta
28 'is' => (
29 reader => 'is',
30 )
31);
32
33123µs22.11ms__PACKAGE__->meta->add_attribute(
# spent 2.02ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 85µs making 1 call to Class::MOP::Mixin::meta
34 'original_options' => (
35 reader => 'original_options',
36 )
37);
38
39
# spent 1.14ms within Moose::Meta::Role::Attribute::new which was called 24 times, avg 48µs/call: # 15 times (717µs+0s) by Moose::Meta::Role::Attribute::clone at line 73, avg 48µs/call # 9 times (428µs+0s) by Class::MOP::Mixin::HasAttributes::add_attribute at line 21 of Class/MOP/Mixin/HasAttributes.pm, avg 48µs/call
sub new {
4024330µs my ( $class, $name, %options ) = @_;
41
422452µs (defined $name)
43 || confess "You must provide a name for the attribute";
44
4524832µs return bless {
46 name => $name,
47 original_options => \%options,
48 %options,
49 }, $class;
50}
51
52
# spent 1.41ms (1.01+393µs) within Moose::Meta::Role::Attribute::attach_to_role which was called 24 times, avg 59µs/call: # 24 times (1.01ms+393µs) by Moose::Meta::Role::_attach_attribute at line 246 of Moose/Meta/Role.pm, avg 59µs/call
sub attach_to_role {
532468µs my ( $self, $role ) = @_;
54
5524715µs48247µs ( blessed($role) && $role->isa('Moose::Meta::Role') )
# spent 128µs making 24 calls to Scalar::Util::blessed, avg 5µs/call # spent 120µs making 24 calls to UNIVERSAL::isa, avg 5µs/call
56 || confess
57 "You must pass a Moose::Meta::Role instance (or a subclass)";
58
5924669µs24146µs weaken( $self->{'associated_role'} = $role );
# spent 146µs making 24 calls to Scalar::Util::weaken, avg 6µs/call
60}
61
62
# spent 95.7ms (1.32+94.4) within Moose::Meta::Role::Attribute::attribute_for_class which was called 21 times, avg 4.56ms/call: # 21 times (1.32ms+94.4ms) by Moose::Meta::Role::Application::ToClass::apply_attributes at line 142 of Moose/Meta/Role/Application/ToClass.pm, avg 4.56ms/call
sub attribute_for_class {
632164µs my $self = shift;
642170µs my $metaclass = shift;
65
66 return $metaclass->interpolate_class_and_new(
67211.30ms6373.9ms $self->name => %{ $self->original_options } );
# spent 94.0ms making 21 calls to Moose::Meta::Attribute::interpolate_class_and_new, avg 4.47ms/call, recursion: max depth 1, sum of overlapping time 20.5ms # spent 272µs making 21 calls to Moose::Meta::Role::Attribute::original_options, avg 13µs/call # spent 175µs making 21 calls to Class::MOP::Mixin::AttributeCore::name, avg 8µs/call
68}
69
70
# spent 1.79ms (804µs+982µs) within Moose::Meta::Role::Attribute::clone which was called 15 times, avg 119µs/call: # 15 times (804µs+982µs) by Moose::Meta::Role::Application::ToRole::apply_attributes at line 71 of Moose/Meta/Role/Application/ToRole.pm, avg 119µs/call
sub clone {
711545µs my $self = shift;
72
7315796µs45982µs return ( ref $self )->new( $self->name, %{ $self->original_options } );
# spent 717µs making 15 calls to Moose::Meta::Role::Attribute::new, avg 48µs/call # spent 181µs making 15 calls to Moose::Meta::Role::Attribute::original_options, avg 12µs/call # spent 84µs making 15 calls to Class::MOP::Mixin::AttributeCore::name, avg 6µs/call
74}
75
76sub is_same_as {
77 my $self = shift;
78 my $attr = shift;
79
80 my $self_options = $self->original_options;
81 my $other_options = $attr->original_options;
82
83 return 0
84 unless ( join q{|}, sort keys %{$self_options} ) eq ( join q{|}, sort keys %{$other_options} );
85
86 for my $key ( keys %{$self_options} ) {
87 return 0 if defined $self_options->{$key} && ! defined $other_options->{$key};
88 return 0 if ! defined $self_options->{$key} && defined $other_options->{$key};
89
90 next if all { ! defined } $self_options->{$key}, $other_options->{$key};
91
92 return 0 unless $self_options->{$key} eq $other_options->{$key};
93 }
94
95 return 1;
96}
97
98133µs1;
99
100=pod
101
- -