← 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:14:24 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.4ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
42117.82ms863msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::generate_roleMooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role
42112.70ms71.8msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::construct_parametersMooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters
42112.33ms1.36sMooseX::Role::Parameterized::Meta::Role::Parameterizable::::applyMooseX::Role::Parameterized::Meta::Role::Parameterizable::apply
42112.08ms171msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::apply_parameterizable_roleMooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role
1111.24ms70.3msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@8MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8
111991µs181msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@7MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7
211250µs30.5msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::__ANON__[:31]MooseX::Role::Parameterized::Meta::Role::Parameterizable::__ANON__[:31]
11181µs22.7msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@2MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2
11175µs26.2msMooseX::Role::Parameterized::Meta::Role::Parameterizable::::add_parameterMooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter
11151µs644µsMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@131MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131
11138µs242µsMooseX::Role::Parameterized::Meta::Role::Parameterizable::::BEGIN@11MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11
11135µs190µ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;
23250µs245.4ms
# spent 22.7ms (81µs+22.7) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2 which was called: # once (81µs+22.7ms) by MooseX::Role::Parameterized::BEGIN@8 at line 2
use Moose;
3111µs15.41msextends 'Moose::Meta::Role';
# spent 5.41ms making 1 call to Moose::extends
4
514µsour $VERSION = '0.19';
6
73537µs1181ms
# spent 181ms (991µs+180) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 which was called: # once (991µs+180ms) by MooseX::Role::Parameterized::BEGIN@8 at line 7
use MooseX::Role::Parameterized::Meta::Role::Parameterized;
83618µs170.3ms
# spent 70.3ms (1.24+69.0) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8 which was called: # once (1.24ms+69.0ms) by MooseX::Role::Parameterized::BEGIN@8 at line 8
use MooseX::Role::Parameterized::Meta::Parameter;
93109µ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
113112µs2446µs
# spent 242µs (38+204) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11 which was called: # once (38µs+204µs) by MooseX::Role::Parameterized::BEGIN@8 at line 11
use constant parameterized_role_metaclass => 'MooseX::Role::Parameterized::Meta::Role::Parameterized';
# spent 242µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11 # spent 204µs making 1 call to constant::import
1231.76ms2344µs
# spent 190µs (35+155) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@12 which was called: # once (35µs+155µs) by MooseX::Role::Parameterized::BEGIN@8 at line 12
use constant parameter_metaclass => 'MooseX::Role::Parameterized::Meta::Parameter';
# spent 190µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@12 # spent 155µs making 1 call to constant::import
13
14115µs19.04mshas parameters_class => (
# spent 9.04ms 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 30.5ms (250µs+30.3) 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 15.3ms/call: # 2 times (250µs+30.3ms) by Class::MOP::Mixin::AttributeCore::default at line 53 of Class/MOP/Mixin/AttributeCore.pm, avg 15.3ms/call
default => sub {
2527µs my $self = shift;
26
272209µs1030.3ms $self->parameters_class->meta->create_anon_class(
# spent 30.0ms making 2 calls to Moose::Meta::Class::create_anon_class, avg 15.0ms/call # spent 178µs making 2 calls to MooseX::Role::Parameterized::Parameters::meta, avg 89µs/call # spent 51µs making 4 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameters_class, avg 13µs/call # spent 10µ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 },
32132µs114.0ms handles => {
# spent 14.0ms making 1 call to Moose::has
33 has_parameter => 'has_attribute',
34 },
35);
36
37112µs113.0mshas role_generator => (
# spent 13.0ms making 1 call to Moose::has
38 is => 'rw',
39 isa => 'CodeRef',
40 predicate => 'has_role_generator',
41);
42
43
# spent 26.2ms (75µs+26.1) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter which was called: # once (75µs+26.1ms) by MooseX::Role::Parameterized::parameter at line 34 of MooseX/Role/Parameterized.pm
sub add_parameter {
4413µs my $self = shift;
4513µs my $name = shift;
46
4712µ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
55149µs226.1ms $self->parameters_metaclass->add_attribute($name => @_);
56}
57
58
# spent 71.8ms (2.70+69.1) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters which was called 42 times, avg 1.71ms/call: # 42 times (2.70ms+69.1ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role at line 77, avg 1.71ms/call
sub construct_parameters {
5942158µs my $self = shift;
6042182µs my %args = @_;
61
62 # need to figure out a plan for these guys..
6342261µs for my $name ('alias', 'excludes') {
6484462µs confess "The parameter name ($name) is currently forbidden"
65 if exists $args{$name};
66 }
67
68421.43ms8469.1ms $self->parameters_metaclass->new_object(\%args);
# spent 54.3ms making 42 calls to Moose::Meta::Class::new_object, avg 1.29ms/call # spent 14.8ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameters_metaclass, avg 353µs/call
69}
70
71
# spent 863ms (7.82+856) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role which was called 42 times, avg 20.6ms/call: # 42 times (7.82ms+856ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply at line 116, avg 20.6ms/call
sub generate_role {
7242218µs my $self = shift;
7342280µs my %args = @_;
74
75 my $parameters = blessed($args{parameters})
76 ? $args{parameters}
77421.46ms8472.0ms : $self->construct_parameters(%{ $args{parameters} });
# spent 71.8ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters, avg 1.71ms/call # spent 205µs making 42 calls to Scalar::Util::blessed, avg 5µs/call
78
7942559µs42531µs confess "A role generator is required to apply parameterized roles (did you forget the 'role { ... }' block in your parameterized role '".$self->name."'?)"
# spent 531µs making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::has_role_generator, avg 13µs/call
80 unless $self->has_role_generator;
81
8242918µs42254µs my $parameterized_role_metaclass = $self->parameterized_role_metaclass;
8342423µs4210.1ms Class::MOP::load_class($parameterized_role_metaclass);
# spent 10.1ms making 42 calls to Class::MOP::load_class, avg 240µs/call
84
8542773µs42396ms my $role = $parameterized_role_metaclass->create_anon_role(
# spent 396ms making 42 calls to Moose::Meta::Role::create_anon_role, avg 9.43ms/call
86 genitor => $self,
87 parameters => $parameters,
88 );
89
9042128µs local $MooseX::Role::Parameterized::CURRENT_METACLASS = $role;
91
9242867µs42171ms $self->apply_parameterizable_role($role);
93
94421.23ms84206ms $self->role_generator->($parameters,
# spent 198ms making 34 calls to Markdent::Role::Event::__ANON__[Markdent/Role/Event.pm:88], avg 5.81ms/call # spent 7.84ms making 8 calls to Markdent::Role::BalancedEvent::__ANON__[Markdent/Role/BalancedEvent.pm:41], avg 980µs/call # spent 627µs making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::role_generator, avg 15µs/call
95 operating_on => $role,
96 consumer => $args{consumer},
97 );
98
9942805µ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.36s (2.33ms+1.35) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply which was called 42 times, avg 32.3ms/call: # 42 times (2.33ms+1.35s) by Moose::Util::_apply_all_roles at line 137 of Moose/Util.pm, avg 32.3ms/call
sub apply {
11242130µs my $self = shift;
1134293µs my $consumer = shift;
11442174µs my %args = @_;
115
11642616µs42863ms my $role = $self->generate_role(
# spent 863ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role, avg 20.6ms/call
117 consumer => $consumer,
118 parameters => \%args,
119 );
120
121421.27ms42490ms $role->apply($consumer, %args);
# spent 490ms making 42 calls to Moose::Meta::Role::apply, avg 11.7ms/call
122}
123
124
# spent 171ms (2.08+168) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role which was called 42 times, avg 4.06ms/call: # 42 times (2.08ms+168ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role at line 92, avg 4.06ms/call
sub apply_parameterizable_role {
12542119µs my $self = shift;
126
127421.85ms42168ms $self->SUPER::apply(@_);
# spent 168ms making 42 calls to Moose::Meta::Role::apply, avg 4.01ms/call
128}
129
130124µs239.1ms__PACKAGE__->meta->make_immutable;
# spent 39.0ms making 1 call to Class::MOP::Class::make_immutable # spent 97µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::meta
1313125µs21.24ms
# spent 644µs (51+592) within MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131 which was called: # once (51µs+592µs) by MooseX::Role::Parameterized::BEGIN@8 at line 131
no Moose;
132
133181µs1;
134
135__END__