| Filename | /home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm |
| Statements | Executed 1045 statements in 18.0ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 42 | 1 | 1 | 7.54ms | 813ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role |
| 42 | 1 | 1 | 2.65ms | 69.3ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters |
| 42 | 1 | 1 | 2.31ms | 1.20s | MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply |
| 42 | 1 | 1 | 1.95ms | 130ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role |
| 1 | 1 | 1 | 1.29ms | 83.6ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8 |
| 1 | 1 | 1 | 1.01ms | 148ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 |
| 2 | 1 | 1 | 225µs | 25.6ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::__ANON__[:31] |
| 1 | 1 | 1 | 75µs | 284µs | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11 |
| 1 | 1 | 1 | 73µs | 21.4ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2 |
| 1 | 1 | 1 | 72µs | 683µs | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131 |
| 1 | 1 | 1 | 64µs | 22.1ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter |
| 1 | 1 | 1 | 36µs | 195µs | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@12 |
| 1 | 1 | 1 | 28µs | 28µs | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@9 |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::Meta::Role::Parameterizable::_role_for_combination |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package MooseX::Role::Parameterized::Meta::Role::Parameterizable; | ||||
| 2 | 3 | 228µs | 2 | 42.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 # spent 21.4ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2
# spent 21.3ms making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:456] |
| 3 | 1 | 14µs | 1 | 4.93ms | extends 'Moose::Meta::Role'; # spent 4.93ms making 1 call to Moose::extends |
| 4 | |||||
| 5 | 1 | 4µs | our $VERSION = '0.19'; | ||
| 6 | |||||
| 7 | 3 | 680µs | 1 | 148ms | # 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 # spent 148ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 |
| 8 | 3 | 704µs | 1 | 83.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 # spent 83.6ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8 |
| 9 | 3 | 147µs | 1 | 28µ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 # spent 28µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@9 |
| 10 | |||||
| 11 | 3 | 123µs | 2 | 494µ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 # spent 284µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11
# spent 210µs making 1 call to constant::import |
| 12 | 3 | 1.72ms | 2 | 354µ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 # 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 | |||||
| 14 | 1 | 15µs | 1 | 9.20ms | has 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 | |||||
| 20 | has 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 | ||||
| 25 | 2 | 7µs | my $self = shift; | ||
| 26 | |||||
| 27 | 2 | 186µs | 10 | 25.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 | }, | ||||
| 32 | 1 | 33µs | 1 | 15.0ms | handles => { # spent 15.0ms making 1 call to Moose::has |
| 33 | has_parameter => 'has_attribute', | ||||
| 34 | }, | ||||
| 35 | ); | ||||
| 36 | |||||
| 37 | 1 | 15µs | 1 | 14.2ms | has 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 | ||||
| 44 | 1 | 3µs | my $self = shift; | ||
| 45 | 1 | 4µs | my $name = shift; | ||
| 46 | |||||
| 47 | 1 | 3µ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.. | ||||
| 51 | 1 | 4µs | confess "The parameter name ($name) is currently forbidden" | ||
| 52 | if $name eq 'alias' | ||||
| 53 | || $name eq 'excludes'; | ||||
| 54 | |||||
| 55 | 1 | 40µs | 2 | 22.1ms | $self->parameters_metaclass->add_attribute($name => @_); # spent 12.8ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameters_metaclass
# spent 9.22ms making 1 call to Moose::Meta::Class::add_attribute |
| 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 | ||||
| 59 | 42 | 130µs | my $self = shift; | ||
| 60 | 42 | 170µs | my %args = @_; | ||
| 61 | |||||
| 62 | # need to figure out a plan for these guys.. | ||||
| 63 | 42 | 248µs | for my $name ('alias', 'excludes') { | ||
| 64 | 84 | 438µs | confess "The parameter name ($name) is currently forbidden" | ||
| 65 | if exists $args{$name}; | ||||
| 66 | } | ||||
| 67 | |||||
| 68 | 42 | 1.37ms | 84 | 66.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 | ||||
| 72 | 42 | 143µs | my $self = shift; | ||
| 73 | 42 | 298µs | my %args = @_; | ||
| 74 | |||||
| 75 | my $parameters = blessed($args{parameters}) | ||||
| 76 | ? $args{parameters} | ||||
| 77 | 42 | 1.40ms | 84 | 69.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 | |||||
| 79 | 42 | 617µs | 42 | 574µ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 | |||||
| 82 | 42 | 830µs | 42 | 224µs | my $parameterized_role_metaclass = $self->parameterized_role_metaclass; # spent 224µs making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameterized_role_metaclass, avg 5µs/call |
| 83 | 42 | 443µs | 42 | 10.1ms | Class::MOP::load_class($parameterized_role_metaclass); # spent 10.1ms making 42 calls to Class::MOP::load_class, avg 241µs/call |
| 84 | |||||
| 85 | 42 | 776µs | 42 | 399ms | 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 | |||||
| 90 | 42 | 133µs | local $MooseX::Role::Parameterized::CURRENT_METACLASS = $role; | ||
| 91 | |||||
| 92 | 42 | 876µs | 42 | 130ms | $self->apply_parameterizable_role($role); # spent 130ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role, avg 3.09ms/call |
| 93 | |||||
| 94 | 42 | 1.10ms | 84 | 196ms | $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 | |||||
| 99 | 42 | 786µs | return $role; | ||
| 100 | } | ||||
| 101 | |||||
| 102 | sub _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 | ||||
| 112 | 42 | 124µs | my $self = shift; | ||
| 113 | 42 | 88µs | my $consumer = shift; | ||
| 114 | 42 | 173µs | my %args = @_; | ||
| 115 | |||||
| 116 | 42 | 568µs | 42 | 813ms | 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 | |||||
| 121 | 42 | 1.24ms | 42 | 384ms | $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 | ||||
| 125 | 42 | 126µs | my $self = shift; | ||
| 126 | |||||
| 127 | 42 | 1.72ms | 42 | 128ms | $self->SUPER::apply(@_); # spent 128ms making 42 calls to Moose::Meta::Role::apply, avg 3.04ms/call |
| 128 | } | ||||
| 129 | |||||
| 130 | 1 | 23µs | 2 | 47.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 |
| 131 | 3 | 155µs | 2 | 1.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 # spent 683µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131
# spent 611µs making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:557] |
| 132 | |||||
| 133 | 1 | 84µs | 1; | ||
| 134 | |||||
| 135 | __END__ |