← 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:05:39 2010

Filename/home/doy/coding/src/Moose/blib/lib//Moose/Meta/Role/Attribute.pm
StatementsExecuted 152 statements in 5.06ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1522811µs811µsMoose::Meta::Role::Attribute::::newMoose::Meta::Role::Attribute::new
1511684µs954µsMoose::Meta::Role::Attribute::::attach_to_roleMoose::Meta::Role::Attribute::attach_to_role
822526µs1.11msMoose::Meta::Role::Attribute::::cloneMoose::Meta::Role::Attribute::clone
711424µs13.4msMoose::Meta::Role::Attribute::::attribute_for_classMoose::Meta::Role::Attribute::attribute_for_class
11170µs88µsMoose::Meta::Role::Attribute::::BEGIN@3Moose::Meta::Role::Attribute::BEGIN@3
11144µs212µsMoose::Meta::Role::Attribute::::BEGIN@6Moose::Meta::Role::Attribute::BEGIN@6
11140µs198µsMoose::Meta::Role::Attribute::::BEGIN@8Moose::Meta::Role::Attribute::BEGIN@8
11139µs165µsMoose::Meta::Role::Attribute::::BEGIN@7Moose::Meta::Role::Attribute::BEGIN@7
11139µs303µsMoose::Meta::Role::Attribute::::BEGIN@13Moose::Meta::Role::Attribute::BEGIN@13
11138µs105µsMoose::Meta::Role::Attribute::::BEGIN@4Moose::Meta::Role::Attribute::BEGIN@4
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
33106µs2106µs
# spent 88µs (70+18) within Moose::Meta::Role::Attribute::BEGIN@3 which was called: # once (70µs+18µs) by Moose::Meta::Role::BEGIN@17 at line 3
use strict;
# spent 88µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@3 # spent 18µs making 1 call to strict::import
43110µs2173µs
# spent 105µs (38+68) within Moose::Meta::Role::Attribute::BEGIN@4 which was called: # once (38µs+68µs) by Moose::Meta::Role::BEGIN@17 at line 4
use warnings;
# spent 105µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@4 # spent 68µs making 1 call to warnings::import
5
63114µs2380µs
# spent 212µs (44+168) within Moose::Meta::Role::Attribute::BEGIN@6 which was called: # once (44µs+168µs) by Moose::Meta::Role::BEGIN@17 at line 6
use Carp 'confess';
# spent 212µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@6 # spent 168µs making 1 call to Exporter::import
73102µs2290µs
# spent 165µs (39+125) within Moose::Meta::Role::Attribute::BEGIN@7 which was called: # once (39µs+125µs) by Moose::Meta::Role::BEGIN@17 at line 7
use List::MoreUtils 'all';
# spent 165µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@7 # spent 125µs making 1 call to Exporter::import
83208µs2356µs
# spent 198µs (40+158) within Moose::Meta::Role::Attribute::BEGIN@8 which was called: # once (40µs+158µs) by Moose::Meta::Role::BEGIN@17 at line 8
use Scalar::Util 'blessed', 'weaken';
# spent 198µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@8 # spent 158µs making 1 call to Exporter::import
9
1014µsour $VERSION = '1.19';
1113µsour $AUTHORITY = 'cpan:STEVAN';
12
1331.36ms2567µs
# spent 303µs (39+264) within Moose::Meta::Role::Attribute::BEGIN@13 which was called: # once (39µs+264µs) by Moose::Meta::Role::BEGIN@17 at line 13
use base 'Moose::Meta::Mixin::AttributeCore';
# spent 303µs making 1 call to Moose::Meta::Role::Attribute::BEGIN@13 # spent 264µs making 1 call to base::import
14
15154µs23.97ms__PACKAGE__->meta->add_attribute(
# spent 2.00ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 1.97ms making 1 call to Class::MOP::Mixin::meta
16 'metaclass' => (
17 reader => 'metaclass',
18 )
19);
20
21124µs21.98ms__PACKAGE__->meta->add_attribute(
# spent 1.89ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 90µs making 1 call to Class::MOP::Mixin::meta
22 'associated_role' => (
23 reader => 'associated_role',
24 )
25);
26
27124µs22.05ms__PACKAGE__->meta->add_attribute(
# spent 1.96ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 88µs making 1 call to Class::MOP::Mixin::meta
28 'is' => (
29 reader => 'is',
30 )
31);
32
33125µs22.02ms__PACKAGE__->meta->add_attribute(
# spent 1.91ms making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 107µs making 1 call to Class::MOP::Mixin::meta
34 'original_options' => (
35 reader => 'original_options',
36 )
37);
38
39
# spent 811µs within Moose::Meta::Role::Attribute::new which was called 15 times, avg 54µs/call: # 8 times (442µs+0s) by Moose::Meta::Role::Attribute::clone at line 73, avg 55µs/call # 7 times (369µs+0s) by Class::MOP::Mixin::HasAttributes::add_attribute at line 18 of Class/MOP/Mixin/HasAttributes.pm, avg 53µs/call
sub new {
4045943µs my ( $class, $name, %options ) = @_;
41
42 (defined $name)
43 || confess "You must provide a name for the attribute";
44
45 return bless {
46 name => $name,
47 original_options => \%options,
48 %options,
49 }, $class;
50}
51
52
# spent 954µs (684+269) within Moose::Meta::Role::Attribute::attach_to_role which was called 15 times, avg 64µs/call: # 15 times (684µs+269µs) by Moose::Meta::Role::_attach_attribute at line 253 of Moose/Meta/Role.pm, avg 64µs/call
sub attach_to_role {
5345988µs my ( $self, $role ) = @_;
54
5530169µs ( blessed($role) && $role->isa('Moose::Meta::Role') )
# spent 89µs making 15 calls to Scalar::Util::blessed, avg 6µs/call # spent 80µs making 15 calls to UNIVERSAL::isa, avg 5µs/call
56 || confess
57 "You must pass a Moose::Meta::Role instance (or a subclass)";
58
5915100µs weaken( $self->{'associated_role'} = $role );
# spent 100µs making 15 calls to Scalar::Util::weaken, avg 7µs/call
60}
61
62
# spent 13.4ms (424µs+12.9) within Moose::Meta::Role::Attribute::attribute_for_class which was called 7 times, avg 1.91ms/call: # 7 times (424µs+12.9ms) by Moose::Meta::Role::Application::ToClass::apply_attributes at line 142 of Moose/Meta/Role/Application/ToClass.pm, avg 1.91ms/call
sub attribute_for_class {
6321483µs my $self = shift;
64 my $metaclass = shift;
65
66 return $metaclass->interpolate_class_and_new(
67215.21ms $self->name => %{ $self->original_options } );
# spent 12.8ms making 7 calls to Moose::Meta::Attribute::interpolate_class_and_new, avg 1.83ms/call, recursion: max depth 1, sum of overlapping time 7.74ms # spent 92µs making 7 calls to Moose::Meta::Role::Attribute::original_options, avg 13µs/call # spent 42µs making 7 calls to Class::MOP::Mixin::AttributeCore::name, avg 6µs/call
68}
69
70
# spent 1.11ms (526µs+588µs) within Moose::Meta::Role::Attribute::clone which was called 8 times, avg 139µs/call: # 6 times (412µs+419µs) by Moose::Meta::Role::Application::ToRole::apply_attributes at line 71 of Moose/Meta/Role/Application/ToRole.pm, avg 138µs/call # 2 times (114µs+169µs) by Moose::Meta::Role::Application::RoleSummation::apply_attributes at line 148 of Moose/Meta/Role/Application/RoleSummation.pm, avg 141µs/call
sub clone {
7116472µs my $self = shift;
72
7324588µs return ( ref $self )->new( $self->name, %{ $self->original_options } );
# spent 442µs making 8 calls to Moose::Meta::Role::Attribute::new, avg 55µs/call # spent 101µs making 8 calls to Moose::Meta::Role::Attribute::original_options, avg 13µs/call # spent 44µs making 8 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
- -