| 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.4ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 42 | 1 | 1 | 7.82ms | 863ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::generate_role |
| 42 | 1 | 1 | 2.70ms | 71.8ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::construct_parameters |
| 42 | 1 | 1 | 2.33ms | 1.36s | MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply |
| 42 | 1 | 1 | 2.08ms | 171ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role |
| 1 | 1 | 1 | 1.24ms | 70.3ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8 |
| 1 | 1 | 1 | 991µs | 181ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 |
| 2 | 1 | 1 | 250µs | 30.5ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::__ANON__[:31] |
| 1 | 1 | 1 | 81µs | 22.7ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2 |
| 1 | 1 | 1 | 75µs | 26.2ms | MooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter |
| 1 | 1 | 1 | 51µs | 644µs | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131 |
| 1 | 1 | 1 | 38µs | 242µs | MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11 |
| 1 | 1 | 1 | 35µs | 190µ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 | 250µs | 2 | 45.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 # spent 22.7ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2
# spent 22.7ms making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:456] |
| 3 | 1 | 11µs | 1 | 5.41ms | extends 'Moose::Meta::Role'; # spent 5.41ms making 1 call to Moose::extends |
| 4 | |||||
| 5 | 1 | 4µs | our $VERSION = '0.19'; | ||
| 6 | |||||
| 7 | 3 | 537µs | 1 | 181ms | # 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 # spent 181ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@7 |
| 8 | 3 | 618µs | 1 | 70.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 # spent 70.3ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@8 |
| 9 | 3 | 109µ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 | 112µs | 2 | 446µ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 # spent 242µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@11
# spent 204µs making 1 call to constant::import |
| 12 | 3 | 1.76ms | 2 | 344µ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 # 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 | |||||
| 14 | 1 | 15µs | 1 | 9.04ms | has 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 | |||||
| 20 | has 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 | ||||
| 25 | 4 | 215µs | my $self = shift; | ||
| 26 | |||||
| 27 | 10 | 30.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 | }, | ||||
| 32 | 1 | 32µs | 1 | 14.0ms | handles => { # spent 14.0ms making 1 call to Moose::has |
| 33 | has_parameter => 'has_attribute', | ||||
| 34 | }, | ||||
| 35 | ); | ||||
| 36 | |||||
| 37 | 1 | 12µs | 1 | 13.0ms | has 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 | ||||
| 44 | 5 | 62µs | my $self = shift; | ||
| 45 | my $name = shift; | ||||
| 46 | |||||
| 47 | 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 | confess "The parameter name ($name) is currently forbidden" | ||||
| 52 | if $name eq 'alias' | ||||
| 53 | || $name eq 'excludes'; | ||||
| 54 | |||||
| 55 | 2 | 26.1ms | $self->parameters_metaclass->add_attribute($name => @_); # spent 17.0ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameters_metaclass
# spent 9.19ms making 1 call to Moose::Meta::Class::add_attribute | ||
| 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 | ||||
| 59 | 168 | 2.03ms | my $self = shift; | ||
| 60 | my %args = @_; | ||||
| 61 | |||||
| 62 | # need to figure out a plan for these guys.. | ||||
| 63 | for my $name ('alias', 'excludes') { | ||||
| 64 | 84 | 462µs | confess "The parameter name ($name) is currently forbidden" | ||
| 65 | if exists $args{$name}; | ||||
| 66 | } | ||||
| 67 | |||||
| 68 | 84 | 69.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 | ||||
| 72 | 462 | 7.66ms | my $self = shift; | ||
| 73 | my %args = @_; | ||||
| 74 | |||||
| 75 | my $parameters = blessed($args{parameters}) | ||||
| 76 | ? $args{parameters} | ||||
| 77 | 84 | 72.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 | |||||
| 79 | 42 | 531µ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 | |||||
| 82 | 42 | 254µs | my $parameterized_role_metaclass = $self->parameterized_role_metaclass; # spent 254µs making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::parameterized_role_metaclass, avg 6µs/call | ||
| 83 | 42 | 10.1ms | Class::MOP::load_class($parameterized_role_metaclass); # spent 10.1ms making 42 calls to Class::MOP::load_class, avg 240µs/call | ||
| 84 | |||||
| 85 | 42 | 396ms | 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 | |||||
| 90 | local $MooseX::Role::Parameterized::CURRENT_METACLASS = $role; | ||||
| 91 | |||||
| 92 | 42 | 171ms | $self->apply_parameterizable_role($role); # spent 171ms making 42 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::apply_parameterizable_role, avg 4.06ms/call | ||
| 93 | |||||
| 94 | 84 | 206ms | $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 | |||||
| 99 | 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.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 | ||||
| 112 | 210 | 2.28ms | my $self = shift; | ||
| 113 | my $consumer = shift; | ||||
| 114 | my %args = @_; | ||||
| 115 | |||||
| 116 | 42 | 863ms | 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 | |||||
| 121 | 42 | 490ms | $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 | ||||
| 125 | 84 | 1.97ms | my $self = shift; | ||
| 126 | |||||
| 127 | 42 | 168ms | $self->SUPER::apply(@_); # spent 168ms making 42 calls to Moose::Meta::Role::apply, avg 4.01ms/call | ||
| 128 | } | ||||
| 129 | |||||
| 130 | 1 | 24µs | 2 | 39.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 |
| 131 | 3 | 125µs | 2 | 1.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 # spent 644µs making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131
# spent 592µs making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:557] |
| 132 | |||||
| 133 | 1 | 81µs | 1; | ||
| 134 | |||||
| 135 | __END__ |