← 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:14:00 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm
StatementsExecuted 1045 statements in 18.0ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
42117.54ms813msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::generate_roleMooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role
42112.65ms69.3msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::construct_parametersMooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters
42112.31ms1.20sMooseX::Role::Parameterized::Meta::Role::Parameterizable::::applyMooseX::Role::Parameterized::Meta::Role::Parameterizable::apply
42111.95ms130msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::apply_parameterizable_roleMooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role
1111.29ms83.6msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@8MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8
1111.01ms148msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@7MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7
211225µs25.6msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::__ANON__[:31]MooseX::Role::Parameterized::Meta::Role::Parameterizable::__ANON__[:31]
11175µs284µsMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@11MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11
11173µs21.4msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@2MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2
11172µs683µsMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@131MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131
11164µs22.1msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::add_parameterMooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter
11136µs195µsMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@12MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@12
11128µs28µsMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@9MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@9
0000s0sMooseX::Role::Parameterized::Meta::Role::Parameterizable::::_role_for_combinationMooseX::Role::Parameterized::Meta::Role::Parameterizable::_role_for_combination
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package MooseX::Role::Parameterized::Meta::Role::Parameterizable;
23228µs242.7ms
# spent 21.4ms (73µs+21.3) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2 which was called: # once (73µs+21.3ms) by MooseX::Role::Parameterized::BEGIN@8 at line 2
use Moose;
3114µs14.93msextends 'Moose::Meta::Role';
# spent 4.93ms making 1 call to Moose::extends
4
514µsour $VERSION = '0.19';
6
73680µs1148ms
# spent 148ms (1.01+147) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 which was called: # once (1.01ms+147ms) by MooseX::Role::Parameterized::BEGIN@8 at line 7
use MooseX::Role::Parameterized::Meta::Role::Parameterized;
83704µs183.6ms
# spent 83.6ms (1.29+82.3) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8 which was called: # once (1.29ms+82.3ms) by MooseX::Role::Parameterized::BEGIN@8 at line 8
use MooseX::Role::Parameterized::Meta::Parameter;
93147µs128µs
# spent 28µs within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@9 which was called: # once (28µs+0s) by MooseX::Role::Parameterized::BEGIN@8 at line 9
use MooseX::Role::Parameterized::Parameters;
10
113123µs2494µs
# spent 284µs (75+210) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11 which was called: # once (75µs+210µs) by MooseX::Role::Parameterized::BEGIN@8 at line 11
use constant parameterized_role_metaclass => 'MooseX::Role::Parameterized::Meta::Role::Parameterized';
# spent 284µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11 # spent 210µs making 1 call to constant::import
1231.72ms2354µs
# spent 195µs (36+159) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@12 which was called: # once (36µs+159µs) by MooseX::Role::Parameterized::BEGIN@8 at line 12
use constant parameter_metaclass => 'MooseX::Role::Parameterized::Meta::Parameter';
# spent 195µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@12 # spent 159µs making 1 call to constant::import
13
14115µs19.20mshas parameters_class => (
# spent 9.20ms making 1 call to Moose::has
15 is => 'ro',
16 isa => 'ClassName',
17 default => 'MooseX::Role::Parameterized::Parameters',
18);
19
20has parameters_metaclass => (
21 is => 'rw',
22 isa => 'Moose::Meta::Class',
23 lazy => 1,
24
# spent 25.6ms (225µs+25.4) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm:31] which was called 2 times, avg 12.8ms/call: # 2 times (225µs+25.4ms) by Class::MOP::Mixin::AttributeCore::default at line 43 of Class/MOP/Mixin/AttributeCore.pm, avg 12.8ms/call
default => sub {
2527µs my $self = shift;
26
272186µs1025.4ms $self->parameters_class->meta->create_anon_class(
# spent 25.1ms making 2 calls to Moose::Meta::Class::create_anon_class, avg 12.6ms/call # spent 176µs making 2 calls to MooseX::Role::Parameterized::Parameters::meta, avg 88µs/call # spent 56µs making 4 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameters_class, avg 14µs/call # spent 11µs making 2 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameter_metaclass, avg 5µs/call
28 superclasses => [$self->parameters_class],
29 attribute_metaclass => $self->parameter_metaclass,
30 );
31 },
32133µs115.0ms handles => {
# spent 15.0ms making 1 call to Moose::has
33 has_parameter => 'has_attribute',
34 },
35);
36
37115µs114.2mshas role_generator => (
# spent 14.2ms making 1 call to Moose::has
38 is => 'rw',
39 isa => 'CodeRef',
40 predicate => 'has_role_generator',
41);
42
43
# spent 22.1ms (64µs+22.1) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter which was called: # once (64µs+22.1ms) by MooseX::Role::Parameterized::parameter at line 34 of MooseX/Role/Parameterized.pm
sub add_parameter {
4413µs my $self = shift;
4514µs my $name = shift;
46
4713µs confess "You must provide a name for the parameter"
48 if !defined($name);
49
50 # need to figure out a plan for these guys..
5114µs confess "The parameter name ($name) is currently forbidden"
52 if $name eq 'alias'
53 || $name eq 'excludes';
54
55140µs222.1ms $self->parameters_metaclass->add_attribute($name => @_);
56}
57
58
# spent 69.3ms (2.65+66.6) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters which was called 42 times, avg 1.65ms/call: # 42 times (2.65ms+66.6ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role at line 77, avg 1.65ms/call
sub construct_parameters {
5942130µs my $self = shift;
6042170µs my %args = @_;
61
62 # need to figure out a plan for these guys..
6342248µs for my $name ('alias', 'excludes') {
6484438µs confess "The parameter name ($name) is currently forbidden"
65 if exists $args{$name};
66 }
67
68421.37ms8466.6ms $self->parameters_metaclass->new_object(\%args);
# spent 52.8ms making 42 calls to Moose::Meta::Class::new_object, avg 1.26ms/call # spent 13.9ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameters_metaclass, avg 330µs/call
69}
70
71
# spent 813ms (7.54+806) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role which was called 42 times, avg 19.4ms/call: # 42 times (7.54ms+806ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply at line 116, avg 19.4ms/call
sub generate_role {
7242143µs my $self = shift;
7342298µs my %args = @_;
74
75 my $parameters = blessed($args{parameters})
76 ? $args{parameters}
77421.40ms8469.5ms : $self->construct_parameters(%{ $args{parameters} });
# spent 69.3ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters, avg 1.65ms/call # spent 201µs making 42 calls to Scalar::Util::blessed, avg 5µs/call
78
7942617µs42574µs confess "A role generator is required to apply parameterized roles (did you forget the 'role { ... }' block in your parameterized role '".$self->name."'?)"
# spent 574µs making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::has_role_generator, avg 14µs/call
80 unless $self->has_role_generator;
81
8242830µs42224µs my $parameterized_role_metaclass = $self->parameterized_role_metaclass;
8342443µs4210.1ms Class::MOP::load_class($parameterized_role_metaclass);
# spent 10.1ms making 42 calls to Class::MOP::load_class, avg 241µs/call
84
8542776µs42399ms my $role = $parameterized_role_metaclass->create_anon_role(
# spent 399ms making 42 calls to Moose::Meta::Role::create_anon_role, avg 9.51ms/call
86 genitor => $self,
87 parameters => $parameters,
88 );
89
9042133µs local $MooseX::Role::Parameterized::CURRENT_METACLASS = $role;
91
9242876µs42130ms $self->apply_parameterizable_role($role);
93
94421.10ms84196ms $self->role_generator->($parameters,
# spent 188ms making 34 calls to Markdent::Role::Event::__ANON__[Markdent/Role/Event.pm:88], avg 5.54ms/call # spent 7.28ms making 8 calls to Markdent::Role::BalancedEvent::__ANON__[Markdent/Role/BalancedEvent.pm:41], avg 910µs/call # spent 583µs making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::role_generator, avg 14µs/call
95 operating_on => $role,
96 consumer => $args{consumer},
97 );
98
9942786µs return $role;
100}
101
102sub _role_for_combination {
103 my $self = shift;
104 my $parameters = shift;
105
106 return $self->generate_role(
107 parameters => $parameters,
108 );
109}
110
111
# spent 1.20s (2.31ms+1.20) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply which was called 42 times, avg 28.6ms/call: # 42 times (2.31ms+1.20s) by Moose::Util::_apply_all_roles at line 137 of Moose/Util.pm, avg 28.6ms/call
sub apply {
11242124µs my $self = shift;
1134288µs my $consumer = shift;
11442173µs my %args = @_;
115
11642568µs42813ms my $role = $self->generate_role(
# spent 813ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role, avg 19.4ms/call
117 consumer => $consumer,
118 parameters => \%args,
119 );
120
121421.24ms42384ms $role->apply($consumer, %args);
# spent 384ms making 42 calls to Moose::Meta::Role::apply, avg 9.13ms/call
122}
123
124
# spent 130ms (1.95+128) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role which was called 42 times, avg 3.09ms/call: # 42 times (1.95ms+128ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role at line 92, avg 3.09ms/call
sub apply_parameterizable_role {
12542126µs my $self = shift;
126
127421.72ms42128ms $self->SUPER::apply(@_);
# spent 128ms making 42 calls to Moose::Meta::Role::apply, avg 3.04ms/call
128}
129
130123µs247.4ms__PACKAGE__->meta->make_immutable;
# spent 47.3ms making 1 call to Class::MOP::Class::make_immutable # spent 98µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::meta
1313155µs21.29ms
# spent 683µs (72+611) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131 which was called: # once (72µs+611µs) by MooseX::Role::Parameterized::BEGIN@8 at line 131
no Moose;
132
133184µs1;
134
135__END__