| 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.1ms | 337ms | MooseX::Role::Parameterized::method |
| 1 | 1 | 1 | 3.03ms | 359ms | MooseX::Role::Parameterized::BEGIN@8 |
| 4 | 3 | 3 | 151µs | 619µs | MooseX::Role::Parameterized::role |
| 1 | 1 | 1 | 110µs | 110µs | MooseX::Role::Parameterized::BEGIN@2 |
| 2 | 2 | 2 | 109µs | 52.7ms | MooseX::Role::Parameterized::parameter |
| 2 | 1 | 1 | 109µs | 21.7ms | MooseX::Role::Parameterized::init_meta |
| 1 | 1 | 1 | 38µs | 200µs | MooseX::Role::Parameterized::BEGIN@5 |
| 1 | 1 | 1 | 37µs | 169µs | MooseX::Role::Parameterized::BEGIN@6 |
| 1 | 1 | 1 | 35µs | 229µs | MooseX::Role::Parameterized::BEGIN@4 |
| 1 | 1 | 1 | 20µs | 20µ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 | 149µs | 1 | 110µs | # spent 110µs within MooseX::Role::Parameterized::BEGIN@2 which was called:
# once (110µs+0s) by Markdent::Role::Event::BEGIN@10 at line 2 # spent 110µs making 1 call to MooseX::Role::Parameterized::BEGIN@2 |
| 3 | 3 | 81µs | 1 | 20µs | # spent 20µs within MooseX::Role::Parameterized::BEGIN@3 which was called:
# once (20µs+0s) by Markdent::Role::Event::BEGIN@10 at line 3 # spent 20µs making 1 call to MooseX::Role::Parameterized::BEGIN@3 |
| 4 | 3 | 110µs | 2 | 423µs | # spent 229µs (35+194) within MooseX::Role::Parameterized::BEGIN@4 which was called:
# once (35µs+194µs) by Markdent::Role::Event::BEGIN@10 at line 4 # spent 229µs making 1 call to MooseX::Role::Parameterized::BEGIN@4
# spent 194µs making 1 call to Moose::Exporter::import |
| 5 | 3 | 108µs | 2 | 361µs | # spent 200µs (38+162) within MooseX::Role::Parameterized::BEGIN@5 which was called:
# once (38µs+162µs) by Markdent::Role::Event::BEGIN@10 at line 5 # spent 200µs making 1 call to MooseX::Role::Parameterized::BEGIN@5
# spent 162µs making 1 call to Exporter::import |
| 6 | 3 | 118µs | 2 | 301µs | # spent 169µs (37+132) within MooseX::Role::Parameterized::BEGIN@6 which was called:
# once (37µs+132µs) by Markdent::Role::Event::BEGIN@10 at line 6 # spent 169µs making 1 call to MooseX::Role::Parameterized::BEGIN@6
# spent 132µs making 1 call to Exporter::import |
| 7 | |||||
| 8 | 3 | 3.23ms | 1 | 359ms | # spent 359ms (3.03+355) within MooseX::Role::Parameterized::BEGIN@8 which was called:
# once (3.03ms+355ms) by Markdent::Role::Event::BEGIN@10 at line 8 # spent 359ms 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 | 35µs | 1 | 5.91ms | Moose::Exporter->setup_import_methods( # spent 5.91ms 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 52.7ms (109µs+52.6) within MooseX::Role::Parameterized::parameter which was called 2 times, avg 26.3ms/call:
# once (28µs+26.3ms) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 16 of Markdent/Role/BalancedEvent.pm
# once (81µs+26.2ms) by MooseX::Role::Parameterized::parameter at line 338 of Moose/Exporter.pm | ||||
| 23 | 6 | 56µs | my $caller = shift; | ||
| 24 | |||||
| 25 | confess "'parameter' may not be used inside of the role block" | ||||
| 26 | if $CURRENT_METACLASS && $CURRENT_METACLASS->genitor->name eq $caller; | ||||
| 27 | |||||
| 28 | 1 | 32µs | my $meta = Class::MOP::class_of($caller); # spent 32µs making 1 call to Class::MOP::class_of | ||
| 29 | |||||
| 30 | my $names = shift; | ||||
| 31 | $names = [$names] if !ref($names); | ||||
| 32 | |||||
| 33 | for my $name (@$names) { | ||||
| 34 | 1 | 20µs | 1 | 26.2ms | $meta->add_parameter($name, @_); # spent 26.2ms making 1 call to MooseX::Role::Parameterized::Meta::Role::Parameterizable::add_parameter |
| 35 | } | ||||
| 36 | } | ||||
| 37 | |||||
| 38 | # spent 619µs (151+468) within MooseX::Role::Parameterized::role which was called 4 times, avg 155µs/call:
# 2 times (108µs+180µs) by MooseX::Role::Parameterized::role at line 338 of Moose/Exporter.pm, avg 144µs/call
# once (25µs+162µs) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 88 of Markdent/Role/Event.pm
# once (19µs+126µs) by Class::MOP::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Class/MOP.pm:118] at line 41 of Markdent/Role/BalancedEvent.pm | ||||
| 39 | 6 | 88µs | my $caller = shift; | ||
| 40 | my $role_generator = shift; | ||||
| 41 | 4 | 180µs | Class::MOP::class_of($caller)->role_generator($role_generator); # spent 110µs making 2 calls to MooseX::Role::Parameterized::Meta::Role::Parameterizable::role_generator, avg 55µs/call
# spent 70µs making 2 calls to Class::MOP::class_of, avg 35µs/call | ||
| 42 | } | ||||
| 43 | |||||
| 44 | # spent 21.7ms (109µs+21.6) within MooseX::Role::Parameterized::init_meta which was called 2 times, avg 10.9ms/call:
# 2 times (109µs+21.6ms) by Moose::Exporter::__ANON__[/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/x86_64-linux/Moose/Exporter.pm:456] at line 423 of Moose/Exporter.pm, avg 10.9ms/call | ||||
| 45 | 8 | 108µs | my $self = shift; | ||
| 46 | my %options = @_; | ||||
| 47 | $options{metaclass} ||= 'MooseX::Role::Parameterized::Meta::Role::Parameterizable'; | ||||
| 48 | |||||
| 49 | 2 | 21.6ms | return Moose::Role->init_meta(%options); # spent 21.6ms making 2 calls to Moose::Role::init_meta, avg 10.8ms/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 337ms (17.1+320) within MooseX::Role::Parameterized::method which was called 424 times, avg 795µs/call:
# 212 times (12.9ms+154ms) by MooseX::Role::Parameterized::method at line 338 of Moose/Exporter.pm, avg 786µs/call
# 34 times (703µs+28.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 27 of Markdent/Role/Event.pm, avg 850µs/call
# 34 times (649µs+27.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 87 of Markdent/Role/Event.pm, avg 823µs/call
# 34 times (648µs+26.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 35 of Markdent/Role/Event.pm, avg 795µs/call
# 34 times (646µs+26.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 29 of Markdent/Role/Event.pm, avg 783µs/call
# 34 times (638µs+25.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 779µs/call
# 34 times (647µs+25.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 32 of Markdent/Role/Event.pm, avg 778µs/call
# 8 times (182µs+7.00ms) 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 897µs/call | ||||
| 65 | 1272 | 12.2ms | my $caller = shift; | ||
| 66 | my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller); | ||||
| 67 | |||||
| 68 | my $name = shift; | ||||
| 69 | my $body = shift; | ||||
| 70 | |||||
| 71 | 424 | 34.6ms | my $method = $meta->method_metaclass->wrap( # spent 31.4ms making 212 calls to Class::MOP::Method::wrap, avg 148µs/call
# spent 3.15ms making 212 calls to Moose::Meta::Role::method_metaclass, avg 15µs/call | ||
| 72 | package_name => $caller, | ||||
| 73 | name => $name, | ||||
| 74 | body => $body, | ||||
| 75 | ); | ||||
| 76 | |||||
| 77 | 212 | 119ms | $meta->add_method($name => $method); # spent 119ms making 212 calls to Class::MOP::Mixin::HasMethods::add_method, avg 562µ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 | 34µs | 1; | ||
| 154 | |||||
| 155 | __END__ |