| Filename | /home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/MooseX/Role/Parameterized.pm |
| Statements | Executed 1315 statements in 16.3ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 424 | 8 | 3 | 17.3ms | 320ms | MooseX::Role::Parameterized::method |
| 1 | 1 | 1 | 3.18ms | 348ms | MooseX::Role::Parameterized::BEGIN@8 |
| 4 | 3 | 3 | 136µs | 583µs | MooseX::Role::Parameterized::role |
| 2 | 2 | 2 | 118µs | 44.5ms | MooseX::Role::Parameterized::parameter |
| 1 | 1 | 1 | 104µs | 104µs | MooseX::Role::Parameterized::BEGIN@2 |
| 2 | 1 | 1 | 103µs | 21.4ms | MooseX::Role::Parameterized::init_meta |
| 1 | 1 | 1 | 39µs | 202µs | MooseX::Role::Parameterized::BEGIN@5 |
| 1 | 1 | 1 | 39µs | 162µs | MooseX::Role::Parameterized::BEGIN@4 |
| 1 | 1 | 1 | 37µs | 164µs | MooseX::Role::Parameterized::BEGIN@6 |
| 1 | 1 | 1 | 19µs | 19µs | MooseX::Role::Parameterized::BEGIN@3 |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::_add_method_modifier |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::after |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::around |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::augment |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::before |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::current_metaclass |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::excludes |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::extends |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::has |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::inner |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::override |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::requires |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::super |
| 0 | 0 | 0 | 0s | 0s | MooseX::Role::Parameterized::with |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package MooseX::Role::Parameterized; | ||||
| 2 | 3 | 148µs | 1 | 104µs | # spent 104µs within MooseX::Role::Parameterized::BEGIN@2 which was called:
# once (104µs+0s) by Markdent::Role::Event::BEGIN@10 at line 2 # spent 104µs making 1 call to MooseX::Role::Parameterized::BEGIN@2 |
| 3 | 3 | 82µs | 1 | 19µs | # spent 19µs within MooseX::Role::Parameterized::BEGIN@3 which was called:
# once (19µs+0s) by Markdent::Role::Event::BEGIN@10 at line 3 # spent 19µs making 1 call to MooseX::Role::Parameterized::BEGIN@3 |
| 4 | 3 | 137µs | 2 | 285µs | # spent 162µs (39+123) within MooseX::Role::Parameterized::BEGIN@4 which was called:
# once (39µs+123µs) by Markdent::Role::Event::BEGIN@10 at line 4 # spent 162µs making 1 call to MooseX::Role::Parameterized::BEGIN@4
# spent 123µs making 1 call to Moose::Exporter::import |
| 5 | 3 | 107µs | 2 | 366µs | # spent 202µs (39+163) within MooseX::Role::Parameterized::BEGIN@5 which was called:
# once (39µs+163µs) by Markdent::Role::Event::BEGIN@10 at line 5 # spent 202µs making 1 call to MooseX::Role::Parameterized::BEGIN@5
# spent 163µs making 1 call to Exporter::import |
| 6 | 3 | 99µs | 2 | 290µs | # spent 164µs (37+126) within MooseX::Role::Parameterized::BEGIN@6 which was called:
# once (37µs+126µs) by Markdent::Role::Event::BEGIN@10 at line 6 # spent 164µs making 1 call to MooseX::Role::Parameterized::BEGIN@6
# spent 126µs making 1 call to Exporter::import |
| 7 | |||||
| 8 | 3 | 3.36ms | 1 | 348ms | # spent 348ms (3.18+345) within MooseX::Role::Parameterized::BEGIN@8 which was called:
# once (3.18ms+345ms) by Markdent::Role::Event::BEGIN@10 at line 8 # spent 348ms making 1 call to MooseX::Role::Parameterized::BEGIN@8 |
| 9 | |||||
| 10 | 1 | 6µs | our $VERSION = '0.19'; | ||
| 11 | 1 | 2µs | our $CURRENT_METACLASS; | ||
| 12 | |||||
| 13 | 1 | 34µs | 1 | 5.48ms | Moose::Exporter->setup_import_methods( # spent 5.48ms making 1 call to Moose::Exporter::setup_import_methods |
| 14 | with_caller => ['parameter', 'role', 'method', 'has', 'with', 'extends', | ||||
| 15 | 'requires', 'excludes', 'augment', 'inner', 'before', | ||||
| 16 | 'after', 'around', 'super', 'override'], | ||||
| 17 | as_is => [ 'confess', 'blessed' ], | ||||
| 18 | ); | ||||
| 19 | |||||
| 20 | sub current_metaclass { $CURRENT_METACLASS } | ||||
| 21 | |||||
| 22 | # spent 44.5ms (118µs+44.4) within MooseX::Role::Parameterized::parameter which was called 2 times, avg 22.3ms/call:
# once (29µs+22.3ms) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 16 of Markdent/Role/BalancedEvent.pm
# once (89µs+22.2ms) by MooseX::Role::Parameterized::parameter at line 338 of Moose/Exporter.pm | ||||
| 23 | 1 | 5µs | my $caller = shift; | ||
| 24 | |||||
| 25 | 1 | 3µs | confess "'parameter' may not be used inside of the role block" | ||
| 26 | if $CURRENT_METACLASS && $CURRENT_METACLASS->genitor->name eq $caller; | ||||
| 27 | |||||
| 28 | 1 | 13µs | 1 | 34µs | my $meta = Class::MOP::class_of($caller); # spent 34µs making 1 call to Class::MOP::class_of |
| 29 | |||||
| 30 | 1 | 5µs | my $names = shift; | ||
| 31 | 1 | 6µs | $names = [$names] if !ref($names); | ||
| 32 | |||||
| 33 | 1 | 24µs | for my $name (@$names) { | ||
| 34 | 1 | 20µs | 1 | 22.1ms | $meta->add_parameter($name, @_); # spent 22.1ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter |
| 35 | } | ||||
| 36 | } | ||||
| 37 | |||||
| 38 | # spent 583µs (136+447) within MooseX::Role::Parameterized::role which was called 4 times, avg 146µs/call:
# 2 times (92µs+177µs) by MooseX::Role::Parameterized::role at line 338 of Moose/Exporter.pm, avg 135µs/call
# once (24µs+144µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 88 of Markdent/Role/Event.pm
# once (20µs+126µs) by Class::MOP::__ANON__[/home/doy/coding/src/Class-MOP/blib/lib//Class/MOP.pm:118] at line 41 of Markdent/Role/BalancedEvent.pm | ||||
| 39 | 2 | 12µs | my $caller = shift; | ||
| 40 | 2 | 6µs | my $role_generator = shift; | ||
| 41 | 2 | 65µs | 4 | 177µs | Class::MOP::class_of($caller)->role_generator($role_generator); # spent 104µs making 2 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::role_generator, avg 52µs/call
# spent 74µs making 2 calls to Class::MOP::class_of, avg 37µs/call |
| 42 | } | ||||
| 43 | |||||
| 44 | # spent 21.4ms (103µs+21.3) within MooseX::Role::Parameterized::init_meta which was called 2 times, avg 10.7ms/call:
# 2 times (103µs+21.3ms) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] at line 423 of Moose/Exporter.pm, avg 10.7ms/call | ||||
| 45 | 2 | 8µs | my $self = shift; | ||
| 46 | 2 | 21µs | my %options = @_; | ||
| 47 | 2 | 9µs | $options{metaclass} ||= 'MooseX::Role::Parameterized::Meta::Role::Parameterizable'; | ||
| 48 | |||||
| 49 | 2 | 65µs | 2 | 21.3ms | return Moose::Role->init_meta(%options); # spent 21.3ms making 2 calls to Moose::Role::init_meta, avg 10.6ms/call |
| 50 | } | ||||
| 51 | |||||
| 52 | sub has { | ||||
| 53 | my $caller = shift; | ||||
| 54 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 55 | |||||
| 56 | my $names = shift; | ||||
| 57 | $names = [$names] if !ref($names); | ||||
| 58 | |||||
| 59 | for my $name (@$names) { | ||||
| 60 | $meta->add_attribute($name, @_); | ||||
| 61 | } | ||||
| 62 | } | ||||
| 63 | |||||
| 64 | # spent 320ms (17.3+303) within MooseX::Role::Parameterized::method which was called 424 times, avg 755µs/call:
# 212 times (13.3ms+145ms) by MooseX::Role::Parameterized::method at line 338 of Moose/Exporter.pm, avg 746µs/call
# 34 times (731µs+29.3ms) by Markdent::Role::Event::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/Event.pm:88] at line 27 of Markdent/Role/Event.pm, avg 883µs/call
# 34 times (648µs+25.4ms) by Markdent::Role::Event::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/Event.pm:88] at line 87 of Markdent/Role/Event.pm, avg 766µs/call
# 34 times (648µs+24.8ms) by Markdent::Role::Event::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/Event.pm:88] at line 29 of Markdent/Role/Event.pm, avg 749µs/call
# 34 times (613µs+24.2ms) by Markdent::Role::Event::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/Event.pm:88] at line 32 of Markdent/Role/Event.pm, avg 731µs/call
# 34 times (602µs+24.0ms) by Markdent::Role::Event::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/Event.pm:88] at line 35 of Markdent/Role/Event.pm, avg 724µs/call
# 34 times (611µs+23.9ms) by Markdent::Role::Event::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/Event.pm:88] at line 38 of Markdent/Role/Event.pm, avg 722µs/call
# 8 times (164µs+6.47ms) by Markdent::Role::BalancedEvent::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Markdent/Role/BalancedEvent.pm:41] at line 40 of Markdent/Role/BalancedEvent.pm, avg 830µs/call | ||||
| 65 | 212 | 794µs | my $caller = shift; | ||
| 66 | 212 | 594µs | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||
| 67 | |||||
| 68 | 212 | 589µs | my $name = shift; | ||
| 69 | 212 | 510µs | my $body = shift; | ||
| 70 | |||||
| 71 | 212 | 5.25ms | 424 | 38.0ms | my $method = $meta->method_metaclass->wrap( # spent 34.9ms making 212 calls to Class::MOP::Method::wrap, avg 165µs/call
# spent 3.05ms making 212 calls to Moose::Meta::Role::method_metaclass, avg 14µs/call |
| 72 | package_name => $caller, | ||||
| 73 | name => $name, | ||||
| 74 | body => $body, | ||||
| 75 | ); | ||||
| 76 | |||||
| 77 | 212 | 4.33ms | 212 | 107ms | $meta->add_method($name => $method); # spent 107ms making 212 calls to Class::MOP::Mixin::HasMethods::add_method, avg 504µs/call |
| 78 | } | ||||
| 79 | |||||
| 80 | sub _add_method_modifier { | ||||
| 81 | my $type = shift; | ||||
| 82 | my $caller = shift; | ||||
| 83 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 84 | |||||
| 85 | my $code = pop @_; | ||||
| 86 | |||||
| 87 | for (@_) { | ||||
| 88 | Carp::croak "Roles do not currently support " | ||||
| 89 | . ref($_) | ||||
| 90 | . " references for $type method modifiers" | ||||
| 91 | if ref $_; | ||||
| 92 | |||||
| 93 | my $add_method = "add_${type}_method_modifier"; | ||||
| 94 | $meta->$add_method($_, $code); | ||||
| 95 | } | ||||
| 96 | } | ||||
| 97 | |||||
| 98 | sub before { | ||||
| 99 | _add_method_modifier('before', @_); | ||||
| 100 | } | ||||
| 101 | |||||
| 102 | sub after { | ||||
| 103 | _add_method_modifier('after', @_); | ||||
| 104 | } | ||||
| 105 | |||||
| 106 | sub around { | ||||
| 107 | _add_method_modifier('around', @_); | ||||
| 108 | } | ||||
| 109 | |||||
| 110 | sub with { | ||||
| 111 | my $caller = shift; | ||||
| 112 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 113 | |||||
| 114 | Moose::Util::apply_all_roles($meta, @_); | ||||
| 115 | } | ||||
| 116 | |||||
| 117 | sub requires { | ||||
| 118 | my $caller = shift; | ||||
| 119 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 120 | |||||
| 121 | Carp::croak "Must specify at least one method" unless @_; | ||||
| 122 | $meta->add_required_methods(@_); | ||||
| 123 | } | ||||
| 124 | |||||
| 125 | sub excludes { | ||||
| 126 | my $caller = shift; | ||||
| 127 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 128 | |||||
| 129 | Carp::croak "Must specify at least one role" unless @_; | ||||
| 130 | $meta->add_excluded_roles(@_); | ||||
| 131 | } | ||||
| 132 | |||||
| 133 | # see Moose.pm for discussion | ||||
| 134 | sub super { | ||||
| 135 | return unless $Moose::SUPER_BODY; | ||||
| 136 | $Moose::SUPER_BODY->(@Moose::SUPER_ARGS); | ||||
| 137 | } | ||||
| 138 | |||||
| 139 | sub override { | ||||
| 140 | my $caller = shift; | ||||
| 141 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 142 | |||||
| 143 | my ($name, $code) = @_; | ||||
| 144 | $meta->add_override_method_modifier($name, $code); | ||||
| 145 | } | ||||
| 146 | |||||
| 147 | sub extends { Carp::croak "Roles do not currently support 'extends'" } | ||||
| 148 | |||||
| 149 | sub inner { Carp::croak "Roles cannot support 'inner'" } | ||||
| 150 | |||||
| 151 | sub augment { Carp::croak "Roles cannot support 'augment'" } | ||||
| 152 | |||||
| 153 | 1 | 33µs | 1; | ||
| 154 | |||||
| 155 | __END__ |