← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 22:00:36 2010
Reported on Wed Nov 17 22:13:59 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/MooseX/Role/Parameterized.pm
StatementsExecuted 1315 statements in 16.3ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
4248317.3ms320msMooseX::Role::Parameterized::::methodMooseX::Role::Parameterized::method
1113.18ms348msMooseX::Role::Parameterized::::BEGIN@8MooseX::Role::Parameterized::BEGIN@8
433136µs583µsMooseX::Role::Parameterized::::roleMooseX::Role::Parameterized::role
222118µs44.5msMooseX::Role::Parameterized::::parameterMooseX::Role::Parameterized::parameter
111104µs104µsMooseX::Role::Parameterized::::BEGIN@2MooseX::Role::Parameterized::BEGIN@2
211103µs21.4msMooseX::Role::Parameterized::::init_metaMooseX::Role::Parameterized::init_meta
11139µs202µsMooseX::Role::Parameterized::::BEGIN@5MooseX::Role::Parameterized::BEGIN@5
11139µs162µsMooseX::Role::Parameterized::::BEGIN@4MooseX::Role::Parameterized::BEGIN@4
11137µs164µsMooseX::Role::Parameterized::::BEGIN@6MooseX::Role::Parameterized::BEGIN@6
11119µs19µsMooseX::Role::Parameterized::::BEGIN@3MooseX::Role::Parameterized::BEGIN@3
0000s0sMooseX::Role::Parameterized::::_add_method_modifierMooseX::Role::Parameterized::_add_method_modifier
0000s0sMooseX::Role::Parameterized::::afterMooseX::Role::Parameterized::after
0000s0sMooseX::Role::Parameterized::::aroundMooseX::Role::Parameterized::around
0000s0sMooseX::Role::Parameterized::::augmentMooseX::Role::Parameterized::augment
0000s0sMooseX::Role::Parameterized::::beforeMooseX::Role::Parameterized::before
0000s0sMooseX::Role::Parameterized::::current_metaclassMooseX::Role::Parameterized::current_metaclass
0000s0sMooseX::Role::Parameterized::::excludesMooseX::Role::Parameterized::excludes
0000s0sMooseX::Role::Parameterized::::extendsMooseX::Role::Parameterized::extends
0000s0sMooseX::Role::Parameterized::::hasMooseX::Role::Parameterized::has
0000s0sMooseX::Role::Parameterized::::innerMooseX::Role::Parameterized::inner
0000s0sMooseX::Role::Parameterized::::overrideMooseX::Role::Parameterized::override
0000s0sMooseX::Role::Parameterized::::requiresMooseX::Role::Parameterized::requires
0000s0sMooseX::Role::Parameterized::::superMooseX::Role::Parameterized::super
0000s0sMooseX::Role::Parameterized::::withMooseX::Role::Parameterized::with
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;
23148µs1104µ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
use 5.008001;
# spent 104µs making 1 call to MooseX::Role::Parameterized::BEGIN@2
3382µs119µ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
use Moose::Role ();
# spent 19µs making 1 call to MooseX::Role::Parameterized::BEGIN@3
43137µs2285µ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
use Moose::Exporter;
# spent 162µs making 1 call to MooseX::Role::Parameterized::BEGIN@4 # spent 123µs making 1 call to Moose::Exporter::import
53107µs2366µ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
use Carp 'confess';
# spent 202µs making 1 call to MooseX::Role::Parameterized::BEGIN@5 # spent 163µs making 1 call to Exporter::import
6399µs2290µ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
use Scalar::Util 'blessed';
# spent 164µs making 1 call to MooseX::Role::Parameterized::BEGIN@6 # spent 126µs making 1 call to Exporter::import
7
833.36ms1348ms
# 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
use MooseX::Role::Parameterized::Meta::Role::Parameterizable;
# spent 348ms making 1 call to MooseX::Role::Parameterized::BEGIN@8
9
1016µsour $VERSION = '0.19';
1112µsour $CURRENT_METACLASS;
12
13134µs15.48msMoose::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
20sub 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
sub parameter {
2315µs my $caller = shift;
24
2513µs confess "'parameter' may not be used inside of the role block"
26 if $CURRENT_METACLASS && $CURRENT_METACLASS->genitor->name eq $caller;
27
28113µs134µs my $meta = Class::MOP::class_of($caller);
# spent 34µs making 1 call to Class::MOP::class_of
29
3015µs my $names = shift;
3116µs $names = [$names] if !ref($names);
32
33124µs for my $name (@$names) {
34120µs122.1ms $meta->add_parameter($name, @_);
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
sub role (&) {
39212µs my $caller = shift;
4026µs my $role_generator = shift;
41265µs4177µ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
sub init_meta {
4528µs my $self = shift;
46221µs my %options = @_;
4729µs $options{metaclass} ||= 'MooseX::Role::Parameterized::Meta::Role::Parameterizable';
48
49265µs221.3ms return Moose::Role->init_meta(%options);
# spent 21.3ms making 2 calls to Moose::Role::init_meta, avg 10.6ms/call
50}
51
52sub 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
sub method {
65212794µs my $caller = shift;
66212594µs my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller);
67
68212589µs my $name = shift;
69212510µs my $body = shift;
70
712125.25ms42438.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
772124.33ms212107ms $meta->add_method($name => $method);
# spent 107ms making 212 calls to Class::MOP::Mixin::HasMethods::add_method, avg 504µs/call
78}
79
80sub _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
98sub before {
99 _add_method_modifier('before', @_);
100}
101
102sub after {
103 _add_method_modifier('after', @_);
104}
105
106sub around {
107 _add_method_modifier('around', @_);
108}
109
110sub 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
117sub 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
125sub 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
134sub super {
135 return unless $Moose::SUPER_BODY;
136 $Moose::SUPER_BODY->(@Moose::SUPER_ARGS);
137}
138
139sub 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
147sub extends { Carp::croak "Roles do not currently support 'extends'" }
148
149sub inner { Carp::croak "Roles cannot support 'inner'" }
150
151sub augment { Carp::croak "Roles cannot support 'augment'" }
152
153133µs1;
154
155__END__