← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 21:45:08 2010
Reported on Wed Nov 17 22:14:23 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.1ms337msMooseX::Role::Parameterized::::methodMooseX::Role::Parameterized::method
1113.03ms359msMooseX::Role::Parameterized::::BEGIN@8MooseX::Role::Parameterized::BEGIN@8
433151µs619µsMooseX::Role::Parameterized::::roleMooseX::Role::Parameterized::role
111110µs110µsMooseX::Role::Parameterized::::BEGIN@2MooseX::Role::Parameterized::BEGIN@2
222109µs52.7msMooseX::Role::Parameterized::::parameterMooseX::Role::Parameterized::parameter
211109µs21.7msMooseX::Role::Parameterized::::init_metaMooseX::Role::Parameterized::init_meta
11138µs200µsMooseX::Role::Parameterized::::BEGIN@5MooseX::Role::Parameterized::BEGIN@5
11137µs169µsMooseX::Role::Parameterized::::BEGIN@6MooseX::Role::Parameterized::BEGIN@6
11135µs229µsMooseX::Role::Parameterized::::BEGIN@4MooseX::Role::Parameterized::BEGIN@4
11120µs20µ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;
23149µs1110µ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
use 5.008001;
# spent 110µs making 1 call to MooseX::Role::Parameterized::BEGIN@2
3381µs120µ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
use Moose::Role ();
# spent 20µs making 1 call to MooseX::Role::Parameterized::BEGIN@3
43110µs2423µ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
use Moose::Exporter;
# spent 229µs making 1 call to MooseX::Role::Parameterized::BEGIN@4 # spent 194µs making 1 call to Moose::Exporter::import
53108µs2361µ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
use Carp 'confess';
# spent 200µs making 1 call to MooseX::Role::Parameterized::BEGIN@5 # spent 162µs making 1 call to Exporter::import
63118µs2301µ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
use Scalar::Util 'blessed';
# spent 169µs making 1 call to MooseX::Role::Parameterized::BEGIN@6 # spent 132µs making 1 call to Exporter::import
7
833.23ms1359ms
# 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
use MooseX::Role::Parameterized::Meta::Role::Parameterizable;
# spent 359ms making 1 call to MooseX::Role::Parameterized::BEGIN@8
9
1016µsour $VERSION = '0.19';
1112µsour $CURRENT_METACLASS;
12
13135µs15.91msMoose::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
20sub 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
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µs132µs my $meta = Class::MOP::class_of($caller);
# spent 32µs making 1 call to Class::MOP::class_of
29
3014µs my $names = shift;
3116µs $names = [$names] if !ref($names);
32
33124µs for my $name (@$names) {
34120µs126.2ms $meta->add_parameter($name, @_);
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
sub role (&) {
39211µs my $caller = shift;
4026µs my $role_generator = shift;
41270µs4180µ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
sub init_meta {
45210µs my $self = shift;
46221µs my %options = @_;
4729µs $options{metaclass} ||= 'MooseX::Role::Parameterized::Meta::Role::Parameterizable';
48
49269µs221.6ms return Moose::Role->init_meta(%options);
# spent 21.6ms making 2 calls to Moose::Role::init_meta, avg 10.8ms/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 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
sub method {
65212800µs my $caller = shift;
66212564µs my $meta = $CURRENT_METACLASS || Class::MOP::class_of($caller);
67
68212573µs my $name = shift;
69212459µs my $body = shift;
70
712125.35ms42434.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
772124.43ms212119ms $meta->add_method($name => $method);
# spent 119ms making 212 calls to Class::MOP::Mixin::HasMethods::add_method, avg 562µ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
153134µs1;
154
155__END__