← Index
NYTProf Performance Profile   « block view • line view • sub view »
For bin/dpath
  Run on Tue Jun 5 15:31:33 2012
Reported on Tue Jun 5 15:31:46 2012

Filename/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm
StatementsExecuted 643 statements in 12.0ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11113.1ms14.1msAttribute::Handlers::::BEGIN@3 Attribute::Handlers::BEGIN@3
1113.25ms4.86msAttribute::Handlers::::BEGIN@110 Attribute::Handlers::BEGIN@110
1111.85ms3.37msAttribute::Handlers::::BEGIN@6 Attribute::Handlers::BEGIN@6
221807µs807µsAttribute::Handlers::::findsym Attribute::Handlers::findsym
441754µs1.76msAttribute::Handlers::::_apply_handler_AH_ Attribute::Handlers::_apply_handler_AH_
211397µs663µsAttribute::Handlers::::__ANON__[:195] Attribute::Handlers::__ANON__[:195]
411116µs116µsAttribute::Handlers::::_gen_handler_AH_ Attribute::Handlers::_gen_handler_AH_
11186µs1.81msAttribute::Handlers::::CHECK Attribute::Handlers::CHECK
11172µs72µsAttribute::Handlers::::BEGIN@2 Attribute::Handlers::BEGIN@2
11169µs139µsAttribute::Handlers::::_resolve_lastattr Attribute::Handlers::_resolve_lastattr
11166µs66µsAttribute::Handlers::_TEST_::::MODIFY_CODE_ATTRIBUTESAttribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES
21164µs64µsAttribute::Handlers::::CORE:match Attribute::Handlers::CORE:match (opcode)
11149µs49µsAttribute::Handlers::::BEGIN@104 Attribute::Handlers::BEGIN@104
11135µs102µsAttribute::Handlers::::BEGIN@215 Attribute::Handlers::BEGIN@215
11134µs81µsAttribute::Handlers::::BEGIN@199 Attribute::Handlers::BEGIN@199
11134µs61µsAttribute::Handlers::::BEGIN@4 Attribute::Handlers::BEGIN@4
11133µs80µsAttribute::Handlers::::BEGIN@148 Attribute::Handlers::BEGIN@148
43132µs32µsAttribute::Handlers::::__ANON__[:111] Attribute::Handlers::__ANON__[:111]
11132µs78µsAttribute::Handlers::::BEGIN@15 Attribute::Handlers::BEGIN@15
11130µs83µsAttribute::Handlers::::BEGIN@124 Attribute::Handlers::BEGIN@124
11128µs48µsAttribute::Handlers::::END Attribute::Handlers::END
11128µs38µsAttribute::Handlers::::BEGIN@17 Attribute::Handlers::BEGIN@17
11128µs64µsAttribute::Handlers::::BEGIN@236 Attribute::Handlers::BEGIN@236
11127µs43µsAttribute::Handlers::::INIT Attribute::Handlers::INIT
11127µs44µsAttribute::Handlers::::BEGIN@5 Attribute::Handlers::BEGIN@5
22117µs17µsAttribute::Handlers::::CORE:qr Attribute::Handlers::CORE:qr (opcode)
11114µs14µsAttribute::Handlers::::import Attribute::Handlers::import
55111µs11µsAttribute::Handlers::::CORE:subst Attribute::Handlers::CORE:subst (opcode)
0000s0sAttribute::Handlers::::AUTOLOAD Attribute::Handlers::AUTOLOAD
0000s0sAttribute::Handlers::_TEST_::::tAttribute::Handlers::_TEST_::t
0000s0sAttribute::Handlers::::_usage_AH_ Attribute::Handlers::_usage_AH_
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Attribute::Handlers;
22175µs172µs
# spent 72µs within Attribute::Handlers::BEGIN@2 which was called: # once (72µs+0s) by App::Rad::Help::BEGIN@2 at line 2
use 5.006;
# spent 72µs making 1 call to Attribute::Handlers::BEGIN@2
32446µs214.4ms
# spent 14.1ms (13.1+1.02) within Attribute::Handlers::BEGIN@3 which was called: # once (13.1ms+1.02ms) by App::Rad::Help::BEGIN@2 at line 3
use Carp;
# spent 14.1ms making 1 call to Attribute::Handlers::BEGIN@3 # spent 210µs making 1 call to Exporter::import
4297µs288µs
# spent 61µs (34+27) within Attribute::Handlers::BEGIN@4 which was called: # once (34µs+27µs) by App::Rad::Help::BEGIN@2 at line 4
use warnings;
# spent 61µs making 1 call to Attribute::Handlers::BEGIN@4 # spent 27µs making 1 call to warnings::import
52114µs262µs
# spent 44µs (27+17) within Attribute::Handlers::BEGIN@5 which was called: # once (27µs+17µs) by App::Rad::Help::BEGIN@2 at line 5
use strict;
# spent 44µs making 1 call to Attribute::Handlers::BEGIN@5 # spent 17µs making 1 call to strict::import
62603µs23.54ms
# spent 3.37ms (1.85+1.52) within Attribute::Handlers::BEGIN@6 which was called: # once (1.85ms+1.52ms) by App::Rad::Help::BEGIN@2 at line 6
use vars qw($VERSION $AUTOLOAD);
# spent 3.37ms making 1 call to Attribute::Handlers::BEGIN@6 # spent 174µs making 1 call to vars::import
712µs$VERSION = '0.89'; # remember to update version in POD!
8# $DB::single=1;
9
1011µsmy %symcache;
11
# spent 807µs within Attribute::Handlers::findsym which was called 2 times, avg 404µs/call: # once (737µs+0s) by Attribute::Handlers::_apply_handler_AH_ at line 213 # once (70µs+0s) by Attribute::Handlers::_resolve_lastattr at line 118
sub findsym {
1229µs my ($pkg, $ref, $type) = @_;
13216µs return $symcache{$pkg,$ref} if $symcache{$pkg,$ref};
1425µs $type ||= ref($ref);
152137µs2124µs
# spent 78µs (32+46) within Attribute::Handlers::BEGIN@15 which was called: # once (32µs+46µs) by App::Rad::Help::BEGIN@2 at line 15
no strict 'refs';
# spent 78µs making 1 call to Attribute::Handlers::BEGIN@15 # spent 46µs making 1 call to strict::unimport
16271µs foreach my $sym ( values %{$pkg."::"} ) {
1722.09ms249µs
# spent 38µs (28+10) within Attribute::Handlers::BEGIN@17 which was called: # once (28µs+10µs) by App::Rad::Help::BEGIN@2 at line 17
use strict;
# spent 38µs making 1 call to Attribute::Handlers::BEGIN@17 # spent 10µs making 1 call to strict::import
18248262µs next unless ref ( \$sym ) eq 'GLOB';
19 return $symcache{$pkg,$ref} = \$sym
20248464µs if *{$sym}{$type} && *{$sym}{$type} == $ref;
21 }
22}
23
24125µsmy %validtype = (
25 VAR => [qw[SCALAR ARRAY HASH]],
26 ANY => [qw[SCALAR ARRAY HASH CODE]],
27 "" => [qw[SCALAR ARRAY HASH CODE]],
28 SCALAR => [qw[SCALAR]],
29 ARRAY => [qw[ARRAY]],
30 HASH => [qw[HASH]],
31 CODE => [qw[CODE]],
32);
331500nsmy %lastattr;
341900nsmy @declarations;
351400nsmy %raw;
361300nsmy %phase;
3715µsmy %sigil = (SCALAR=>'$', ARRAY=>'@', HASH=>'%');
3811µsmy $global_phase = 0;
3914µsmy %global_phases = (
40 BEGIN => 0,
41 CHECK => 1,
42 INIT => 2,
43 END => 3,
44);
4515µsmy @global_phases = qw(BEGIN CHECK INIT END);
46
47sub _usage_AH_ {
48 croak "Usage: use $_[0] autotie => {AttrName => TieClassName,...}";
49}
50
51134µs112µsmy $qual_id = qr/^[_a-z]\w*(::[_a-z]\w*)*$/i;
# spent 12µs making 1 call to Attribute::Handlers::CORE:qr
52
53
# spent 14µs within Attribute::Handlers::import which was called: # once (14µs+0s) by App::Rad::Help::BEGIN@2 at line 2 of App/Rad/Help.pm
sub import {
5413µs my $class = shift @_;
5512µs return unless $class eq "Attribute::Handlers";
56117µs while (@_) {
57 my $cmd = shift;
58 if ($cmd =~ /^autotie((?:ref)?)$/) {
59 my $tiedata = ($1 ? '$ref, ' : '') . '@$data';
60 my $mapping = shift;
61 _usage_AH_ $class unless ref($mapping) eq 'HASH';
62 while (my($attr, $tieclass) = each %$mapping) {
63 $tieclass =~ s/^([_a-z]\w*(::[_a-z]\w*)*)(.*)/$1/is;
64 my $args = $3||'()';
65 _usage_AH_ $class unless $attr =~ $qual_id
66 && $tieclass =~ $qual_id
67 && eval "use base q\0$tieclass\0; 1";
68 if ($tieclass->isa('Exporter')) {
69 local $Exporter::ExportLevel = 2;
70 $tieclass->import(eval $args);
71 }
72 $attr =~ s/__CALLER__/caller(1)/e;
73 $attr = caller()."::".$attr unless $attr =~ /::/;
74 eval qq{
75 sub $attr : ATTR(VAR) {
76 my (\$ref, \$data) = \@_[2,4];
77 my \$was_arrayref = ref \$data eq 'ARRAY';
78 \$data = [ \$data ] unless \$was_arrayref;
79 my \$type = ref(\$ref)||"value (".(\$ref||"<undef>").")";
80 (\$type eq 'SCALAR')? tie \$\$ref,'$tieclass',$tiedata
81 :(\$type eq 'ARRAY') ? tie \@\$ref,'$tieclass',$tiedata
82 :(\$type eq 'HASH') ? tie \%\$ref,'$tieclass',$tiedata
83 : die "Can't autotie a \$type\n"
84 } 1
85 } or die "Internal error: $@";
86 }
87 }
88 else {
89 croak "Can't understand $_";
90 }
91 }
92}
93
94# On older perls, code attribute handlers run before the sub gets placed
95# in its package. Since the :ATTR handlers need to know the name of the
96# sub they're applied to, the name lookup (via findsym) needs to be
97# delayed: we do it immediately before we might need to find attribute
98# handlers from their name. However, on newer perls (which fix some
99# problems relating to attribute application), a sub gets placed in its
100# package before its attributes are processed. In this case, the
101# delayed name lookup might be too late, because the sub we're looking
102# for might have already been replaced. So we need to detect which way
103# round this perl does things, and time the name lookup accordingly.
104
# spent 49µs within Attribute::Handlers::BEGIN@104 which was called: # once (49µs+0s) by App::Rad::Help::BEGIN@2 at line 114
BEGIN {
1051800ns my $delayed;
106
# spent 66µs within Attribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES which was called: # once (66µs+0s) by attributes::import at line 55 of attributes.pm
sub Attribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES {
107155µs $delayed = \&Attribute::Handlers::_TEST_::t != $_[1];
108117µs return ();
109 }
1102952µs25.64ms
# spent 4.86ms (3.25+1.61) within Attribute::Handlers::BEGIN@110 which was called: # once (3.25ms+1.61ms) by App::Rad::Help::BEGIN@2 at line 110
sub Attribute::Handlers::_TEST_::t :T { }
# spent 4.86ms making 1 call to Attribute::Handlers::BEGIN@110 # spent 780µs making 1 call to attributes::import
1115121µs
# spent 32µs within Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:111] which was called 4 times, avg 8µs/call: # 2 times (13µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 142, avg 7µs/call # once (13µs+0s) by Attribute::Handlers::CHECK at line 239 # once (6µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 167
*_delayed_name_resolution = sub() { $delayed };
112112µs undef &Attribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES;
113118µs undef &Attribute::Handlers::_TEST_::t;
1141427µs149µs}
# spent 49µs making 1 call to Attribute::Handlers::BEGIN@104
115
116
# spent 139µs (69+70) within Attribute::Handlers::_resolve_lastattr which was called: # once (69µs+70µs) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 167
sub _resolve_lastattr {
11712µs return unless $lastattr{ref};
118111µs170µs my $sym = findsym @lastattr{'pkg','ref'}
# spent 70µs making 1 call to Attribute::Handlers::findsym
119 or die "Internal error: $lastattr{pkg} symbol went missing";
12014µs my $name = *{$sym}{NAME};
12114µs warn "Declaration of $name attribute in package $lastattr{pkg} may clash with future reserved word\n"
122 if $^W and $name !~ /[A-Z]/;
12316µs foreach ( @{$validtype{$lastattr{type}}} ) {
12421.14ms2135µs
# spent 83µs (30+53) within Attribute::Handlers::BEGIN@124 which was called: # once (30µs+53µs) by App::Rad::Help::BEGIN@2 at line 124
no strict 'refs';
# spent 83µs making 1 call to Attribute::Handlers::BEGIN@124 # spent 53µs making 1 call to strict::unimport
125122µs *{"$lastattr{pkg}::_ATTR_${_}_${name}"} = $lastattr{ref};
126 }
127118µs %lastattr = ();
128}
129
130sub AUTOLOAD {
131 return if $AUTOLOAD =~ /::DESTROY$/;
132 my ($class) = $AUTOLOAD =~ m/(.*)::/g;
133 $AUTOLOAD =~ m/_ATTR_(.*?)_(.*)/ or
134 croak "Can't locate class method '$AUTOLOAD' via package '$class'";
135 croak "Attribute handler '$2' doesn't handle $1 attributes";
136}
137
138114µs15µsmy $builtin = qr/lvalue|method|locked|unique|shared/;
# spent 5µs making 1 call to Attribute::Handlers::CORE:qr
139
140
# spent 116µs within Attribute::Handlers::_gen_handler_AH_ which was called 4 times, avg 29µs/call: # 4 times (116µs+0s) by App::Rad::Help::BEGIN@2 at line 201, avg 29µs/call
sub _gen_handler_AH_() {
141
# spent 663µs (397+266) within Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] which was called 2 times, avg 331µs/call: # 2 times (397µs+266µs) by attributes::import at line 55 of attributes.pm, avg 331µs/call
return sub {
142212µs213µs _resolve_lastattr if _delayed_name_resolution;
# spent 13µs making 2 calls to Attribute::Handlers::__ANON__[Attribute/Handlers.pm:111], avg 7µs/call
143211µs my ($pkg, $ref, @attrs) = @_;
144234µs my (undef, $filename, $linenum) = caller 2;
145210µs foreach (@attrs) {
146299µs264µs my ($attr, $data) = /^([a-z_]\w*)(?:[(](.*)[)])?$/is or next;
# spent 64µs making 2 calls to Attribute::Handlers::CORE:match, avg 32µs/call
14726µs if ($attr eq 'ATTR') {
14821.64ms2126µs
# spent 80µs (33+47) within Attribute::Handlers::BEGIN@148 which was called: # once (33µs+47µs) by App::Rad::Help::BEGIN@2 at line 148
no strict 'refs';
# spent 80µs making 1 call to Attribute::Handlers::BEGIN@148 # spent 47µs making 1 call to strict::unimport
1491700ns $data ||= "ANY";
150127µs14µs $raw{$ref} = $data =~ s/\s*,?\s*RAWDATA\s*,?\s*//;
# spent 4µs making 1 call to Attribute::Handlers::CORE:subst
151122µs11µs $phase{$ref}{BEGIN} = 1
# spent 1µs making 1 call to Attribute::Handlers::CORE:subst
152 if $data =~ s/\s*,?\s*(BEGIN)\s*,?\s*//;
153114µs13µs $phase{$ref}{INIT} = 1
# spent 3µs making 1 call to Attribute::Handlers::CORE:subst
154 if $data =~ s/\s*,?\s*(INIT)\s*,?\s*//;
155112µs12µs $phase{$ref}{END} = 1
# spent 2µs making 1 call to Attribute::Handlers::CORE:subst
156 if $data =~ s/\s*,?\s*(END)\s*,?\s*//;
157 $phase{$ref}{CHECK} = 1
158 if $data =~ s/\s*,?\s*(CHECK)\s*,?\s*//
159122µs11µs || ! keys %{$phase{$ref}};
# spent 1µs making 1 call to Attribute::Handlers::CORE:subst
160 # Added for cleanup to not pollute next call.
16112µs (%lastattr = ()),
162 croak "Can't have two ATTR specifiers on one subroutine"
163 if keys %lastattr;
16412µs croak "Bad attribute type: ATTR($data)"
165 unless $validtype{$data};
16619µs %lastattr=(pkg=>$pkg,ref=>$ref,type=>$data);
167113µs2145µs _resolve_lastattr unless _delayed_name_resolution;
# spent 139µs making 1 call to Attribute::Handlers::_resolve_lastattr # spent 6µs making 1 call to Attribute::Handlers::__ANON__[Attribute/Handlers.pm:111]
168 }
169 else {
17014µs my $type = ref $ref;
171141µs111µs my $handler = $pkg->can("_ATTR_${type}_${attr}");
# spent 11µs making 1 call to UNIVERSAL::can
17211µs next unless $handler;
173112µs my $decl = [$pkg, $ref, $attr, $data,
174 $raw{$handler}, $phase{$handler}, $filename, $linenum];
17514µs foreach my $gphase (@global_phases) {
176421µs122µs _apply_handler_AH_($decl,$gphase)
# spent 22µs making 1 call to Attribute::Handlers::_apply_handler_AH_
177 if $global_phases{$gphase} <= $global_phase;
178 }
17915µs if ($global_phase != 0) {
180 # if _gen_handler_AH_ is being called after
181 # CHECK it's for a lexical, so make sure
182 # it didn't want to run anything later
183
184 local $Carp::CarpLevel = 2;
185 carp "Won't be able to apply END handler"
186 if $phase{$handler}{END};
187 }
188 else {
18913µs push @declarations, $decl
190 }
191 }
19229µs $_ = undef;
193 }
194438µs return grep {defined && !/$builtin/} @attrs;
195 }
1964138µs}
197
198{
1993592µs2128µs
# spent 81µs (34+47) within Attribute::Handlers::BEGIN@199 which was called: # once (34µs+47µs) by App::Rad::Help::BEGIN@2 at line 199
no strict 'refs';
# spent 81µs making 1 call to Attribute::Handlers::BEGIN@199 # spent 47µs making 1 call to strict::unimport
200 *{"Attribute::Handlers::UNIVERSAL::MODIFY_${_}_ATTRIBUTES"} =
201188µs4116µs _gen_handler_AH_ foreach @{$validtype{ANY}};
# spent 116µs making 4 calls to Attribute::Handlers::_gen_handler_AH_, avg 29µs/call
202}
203136µspush @UNIVERSAL::ISA, 'Attribute::Handlers::UNIVERSAL'
204 unless grep /^Attribute::Handlers::UNIVERSAL$/, @UNIVERSAL::ISA;
205
206
# spent 1.76ms (754µs+1.01) within Attribute::Handlers::_apply_handler_AH_ which was called 4 times, avg 441µs/call: # once (698µs+1.01ms) by Attribute::Handlers::CHECK at line 241 # once (22µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 176 # once (19µs+0s) by Attribute::Handlers::END at line 256 # once (16µs+0s) by Attribute::Handlers::INIT at line 248
sub _apply_handler_AH_ {
207416µs my ($declaration, $phase) = @_;
208425µs my ($pkg, $ref, $attr, $data, $raw, $handlerphase, $filename, $linenum) = @$declaration;
209457µs return unless $handlerphase->{$phase};
210 # print STDERR "Handling $attr on $ref in $phase with [$data]\n";
21114µs my $type = ref $ref;
21215µs my $handler = "_ATTR_${type}_${attr}";
21318µs1737µs my $sym = findsym($pkg, $ref);
# spent 737µs making 1 call to Attribute::Handlers::findsym
2141700ns $sym ||= $type eq 'CODE' ? 'ANON' : 'LEXICAL';
2152474µs2168µs
# spent 102µs (35+66) within Attribute::Handlers::BEGIN@215 which was called: # once (35µs+66µs) by App::Rad::Help::BEGIN@2 at line 215
no warnings;
# spent 102µs making 1 call to Attribute::Handlers::BEGIN@215 # spent 66µs making 1 call to warnings::unimport
21614µs if (!$raw && defined($data)) {
21713µs if ($data ne '') {
2181237µs my $evaled = eval("package $pkg; no warnings; no strict;
# spent 402µs executing statements in string eval
# includes 96µs spent executing 2 calls to 3 subs defined therein.
219 local \$SIG{__WARN__}=sub{die}; [$data]");
22012µs $data = $evaled unless $@;
221 }
222 else { $data = undef }
223 }
224 $pkg->$handler($sym,
225122µs126µs (ref $sym eq 'GLOB' ? *{$sym}{ref $ref}||$ref : $ref),
# spent 26µs making 1 call to UNIVERSAL::Help
226 $attr,
227 $data,
228 $phase,
229 $filename,
230 $linenum,
231 );
232114µs return 1;
233}
234
235{
2363634µs2100µs
# spent 64µs (28+36) within Attribute::Handlers::BEGIN@236 which was called: # once (28µs+36µs) by App::Rad::Help::BEGIN@2 at line 236
no warnings 'void';
# spent 64µs making 1 call to Attribute::Handlers::BEGIN@236 # spent 36µs making 1 call to warnings::unimport
237
# spent 1.81ms (86µs+1.72) within Attribute::Handlers::CHECK which was called: # once (86µs+1.72ms) by main::RUNTIME at line 0 of bin/dpath
CHECK {
23812µs $global_phase++;
239110µs113µs _resolve_lastattr if _delayed_name_resolution;
240120µs foreach my $decl (@declarations) {
241110µs11.71ms _apply_handler_AH_($decl, 'CHECK');
# spent 1.71ms making 1 call to Attribute::Handlers::_apply_handler_AH_
242 }
243 }
244
245
# spent 43µs (27+16) within Attribute::Handlers::INIT which was called: # once (27µs+16µs) by main::RUNTIME at line 0 of bin/dpath
INIT {
24611µs $global_phase++;
247115µs foreach my $decl (@declarations) {
24818µs116µs _apply_handler_AH_($decl, 'INIT');
# spent 16µs making 1 call to Attribute::Handlers::_apply_handler_AH_
249 }
250 }
251}
252
253
# spent 48µs (28+19) within Attribute::Handlers::END which was called: # once (28µs+19µs) by main::RUNTIME at line 0 of bin/dpath
END {
25411µs $global_phase++;
255116µs foreach my $decl (@declarations) {
256110µs119µs _apply_handler_AH_($decl, 'END');
# spent 19µs making 1 call to Attribute::Handlers::_apply_handler_AH_
257 }
258}
259
260165µs1;
261__END__
 
# spent 64µs within Attribute::Handlers::CORE:match which was called 2 times, avg 32µs/call: # 2 times (64µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 146, avg 32µs/call
sub Attribute::Handlers::CORE:match; # opcode
# spent 17µs within Attribute::Handlers::CORE:qr which was called 2 times, avg 9µs/call: # once (12µs+0s) by App::Rad::Help::BEGIN@2 at line 51 # once (5µs+0s) by App::Rad::Help::BEGIN@2 at line 138
sub Attribute::Handlers::CORE:qr; # opcode
# spent 11µs within Attribute::Handlers::CORE:subst which was called 5 times, avg 2µs/call: # once (4µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 150 # once (3µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 153 # once (2µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 155 # once (1µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 151 # once (1µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 159
sub Attribute::Handlers::CORE:subst; # opcode