← Index
NYTProf Performance Profile   « line view »
For /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
  Run on Mon Jan 29 16:55:34 2018
Reported on Mon Jan 29 16:57:06 2018

Filename/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm
StatementsExecuted 4062 statements in 3.90ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1112.56ms2.72msAttribute::Handlers::::BEGIN@3 Attribute::Handlers::BEGIN@3
44411.54ms3.12msAttribute::Handlers::::_apply_handler_AH_ Attribute::Handlers::_apply_handler_AH_
12211.20ms1.20msAttribute::Handlers::::findsym Attribute::Handlers::findsym
111491µs746µsAttribute::Handlers::::BEGIN@114 Attribute::Handlers::BEGIN@114
111271µs504µsAttribute::Handlers::::BEGIN@6 Attribute::Handlers::BEGIN@6
1311245µs337µsAttribute::Handlers::::__ANON__[:199] Attribute::Handlers::__ANON__[:199]
11139µs3.07msAttribute::Handlers::::CHECK Attribute::Handlers::CHECK
121129µs29µsAttribute::Handlers::::CORE:match Attribute::Handlers::CORE:match (opcode)
11127µs61µsAttribute::Handlers::::END Attribute::Handlers::END
11125µs57µsAttribute::Handlers::::INIT Attribute::Handlers::INIT
153113µs13µsAttribute::Handlers::::__ANON__[:115] Attribute::Handlers::__ANON__[:115]
11111µs22µsAttribute::Handlers::::_resolve_lastattr Attribute::Handlers::_resolve_lastattr
4119µs9µsAttribute::Handlers::::_gen_handler_AH_ Attribute::Handlers::_gen_handler_AH_
1118µs8µsAttribute::Handlers::::BEGIN@2 Attribute::Handlers::BEGIN@2
1118µs8µsAttribute::Handlers::::BEGIN@108 Attribute::Handlers::BEGIN@108
1117µs11µsAttribute::Handlers::::BEGIN@4 Attribute::Handlers::BEGIN@4
1116µs19µsAttribute::Handlers::::BEGIN@219 Attribute::Handlers::BEGIN@219
1116µs13µsAttribute::Handlers::::BEGIN@152 Attribute::Handlers::BEGIN@152
1115µs13µsAttribute::Handlers::::BEGIN@203 Attribute::Handlers::BEGIN@203
1115µs12µsAttribute::Handlers::::BEGIN@240 Attribute::Handlers::BEGIN@240
1115µs14µsAttribute::Handlers::::BEGIN@128 Attribute::Handlers::BEGIN@128
1115µs12µsAttribute::Handlers::::BEGIN@15 Attribute::Handlers::BEGIN@15
1115µs6µsAttribute::Handlers::::BEGIN@21 Attribute::Handlers::BEGIN@21
1114µs5µsAttribute::Handlers::::BEGIN@5 Attribute::Handlers::BEGIN@5
1112µs2µsAttribute::Handlers::_TEST_::::MODIFY_CODE_ATTRIBUTESAttribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES
1112µs2µsAttribute::Handlers::::import Attribute::Handlers::import
2212µs2µsAttribute::Handlers::::CORE:qr Attribute::Handlers::CORE:qr (opcode)
551900ns900nsAttribute::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;
2222µs18µs
# spent 8µs within Attribute::Handlers::BEGIN@2 which was called: # once (8µs+0s) by App::Rad::Help::BEGIN@2 at line 2
use 5.006;
# spent 8µs making 1 call to Attribute::Handlers::BEGIN@2
3266µs22.75ms
# spent 2.72ms (2.56+164µs) within Attribute::Handlers::BEGIN@3 which was called: # once (2.56ms+164µs) by App::Rad::Help::BEGIN@2 at line 3
use Carp;
# spent 2.72ms making 1 call to Attribute::Handlers::BEGIN@3 # spent 31µs making 1 call to Exporter::import
4215µs215µs
# spent 11µs (7+4) within Attribute::Handlers::BEGIN@4 which was called: # once (7µs+4µs) by App::Rad::Help::BEGIN@2 at line 4
use warnings;
# spent 11µs making 1 call to Attribute::Handlers::BEGIN@4 # spent 4µs making 1 call to warnings::import
5214µs26µs
# spent 5µs (4+1000ns) within Attribute::Handlers::BEGIN@5 which was called: # once (4µs+1000ns) by App::Rad::Help::BEGIN@2 at line 5
use strict;
# spent 5µs making 1 call to Attribute::Handlers::BEGIN@5 # spent 1µs making 1 call to strict::import
6289µs2530µs
# spent 504µs (271+233) within Attribute::Handlers::BEGIN@6 which was called: # once (271µs+233µs) by App::Rad::Help::BEGIN@2 at line 6
use vars qw($VERSION $AUTOLOAD);
# spent 504µs making 1 call to Attribute::Handlers::BEGIN@6 # spent 26µs making 1 call to vars::import
71400ns$VERSION = '0.97'; # remember to update version in POD!
8# $DB::single=1;
9
101100nsmy %symcache;
11
# spent 1.20ms within Attribute::Handlers::findsym which was called 12 times, avg 100µs/call: # 11 times (1.19ms+0s) by Attribute::Handlers::_apply_handler_AH_ at line 217, avg 108µs/call # once (11µs+0s) by Attribute::Handlers::_resolve_lastattr at line 122
sub findsym {
12125µs my ($pkg, $ref, $type) = @_;
131215µs return $symcache{$pkg,$ref} if $symcache{$pkg,$ref};
14124µs $type ||= ref($ref);
15244µs218µs
# spent 12µs (5+7) within Attribute::Handlers::BEGIN@15 which was called: # once (5µs+7µs) by App::Rad::Help::BEGIN@2 at line 15
no strict 'refs';
# spent 12µs making 1 call to Attribute::Handlers::BEGIN@15 # spent 7µs making 1 call to strict::unimport
161212µs my $symtab = \%{$pkg."::"};
17882539µs for ( keys %$symtab ) { for my $sym ( $$symtab{$_} ) {
18870160µs if (ref $sym && $sym == $ref) {
19 return $symcache{$pkg,$ref} = \*{"$pkg:\:$_"};
20 }
212379µs27µs
# spent 6µs (5+1) within Attribute::Handlers::BEGIN@21 which was called: # once (5µs+1µs) by App::Rad::Help::BEGIN@2 at line 21
use strict;
# spent 6µs making 1 call to Attribute::Handlers::BEGIN@21 # spent 1µs making 1 call to strict::import
22861179µs next unless ref ( \$sym ) eq 'GLOB';
23 return $symcache{$pkg,$ref} = \$sym
24799306µs if *{$sym}{$type} && *{$sym}{$type} == $ref;
25 }}
26}
27
2815µsmy %validtype = (
29 VAR => [qw[SCALAR ARRAY HASH]],
30 ANY => [qw[SCALAR ARRAY HASH CODE]],
31 "" => [qw[SCALAR ARRAY HASH CODE]],
32 SCALAR => [qw[SCALAR]],
33 ARRAY => [qw[ARRAY]],
34 HASH => [qw[HASH]],
35 CODE => [qw[CODE]],
36);
371100nsmy %lastattr;
38my @declarations;
39my %raw;
40my %phase;
411700nsmy %sigil = (SCALAR=>'$', ARRAY=>'@', HASH=>'%');
421200nsmy $global_phase = 0;
431600nsmy %global_phases = (
44 BEGIN => 0,
45 CHECK => 1,
46 INIT => 2,
47 END => 3,
48);
491500nsmy @global_phases = qw(BEGIN CHECK INIT END);
50
51sub _usage_AH_ {
52 croak "Usage: use $_[0] autotie => {AttrName => TieClassName,...}";
53}
54
5515µs11µsmy $qual_id = qr/^[_a-z]\w*(::[_a-z]\w*)*$/i;
# spent 1µs making 1 call to Attribute::Handlers::CORE:qr
56
57
# spent 2µs within Attribute::Handlers::import which was called: # once (2µs+0s) by App::Rad::Help::BEGIN@2 at line 2 of App/Rad/Help.pm
sub import {
581400ns my $class = shift @_;
591400ns return unless $class eq "Attribute::Handlers";
6012µs while (@_) {
61 my $cmd = shift;
62 if ($cmd =~ /^autotie((?:ref)?)$/) {
63 my $tiedata = ($1 ? '$ref, ' : '') . '@$data';
64 my $mapping = shift;
65 _usage_AH_ $class unless ref($mapping) eq 'HASH';
66 while (my($attr, $tieclass) = each %$mapping) {
67 $tieclass =~ s/^([_a-z]\w*(::[_a-z]\w*)*)(.*)/$1/is;
68 my $args = $3||'()';
69 _usage_AH_ $class unless $attr =~ $qual_id
70 && $tieclass =~ $qual_id
71 && eval "use base q\0$tieclass\0; 1";
72 if ($tieclass->isa('Exporter')) {
73 local $Exporter::ExportLevel = 2;
74 $tieclass->import(eval $args);
75 }
76 $attr =~ s/__CALLER__/caller(1)/e;
77 $attr = caller()."::".$attr unless $attr =~ /::/;
78 eval qq{
79 sub $attr : ATTR(VAR) {
80 my (\$ref, \$data) = \@_[2,4];
81 my \$was_arrayref = ref \$data eq 'ARRAY';
82 \$data = [ \$data ] unless \$was_arrayref;
83 my \$type = ref(\$ref)||"value (".(\$ref||"<undef>").")";
84 (\$type eq 'SCALAR')? tie \$\$ref,'$tieclass',$tiedata
85 :(\$type eq 'ARRAY') ? tie \@\$ref,'$tieclass',$tiedata
86 :(\$type eq 'HASH') ? tie \%\$ref,'$tieclass',$tiedata
87 : die "Can't autotie a \$type\n"
88 } 1
89 } or die "Internal error: $@";
90 }
91 }
92 else {
93 croak "Can't understand $_";
94 }
95 }
96}
97
98# On older perls, code attribute handlers run before the sub gets placed
99# in its package. Since the :ATTR handlers need to know the name of the
100# sub they're applied to, the name lookup (via findsym) needs to be
101# delayed: we do it immediately before we might need to find attribute
102# handlers from their name. However, on newer perls (which fix some
103# problems relating to attribute application), a sub gets placed in its
104# package before its attributes are processed. In this case, the
105# delayed name lookup might be too late, because the sub we're looking
106# for might have already been replaced. So we need to detect which way
107# round this perl does things, and time the name lookup accordingly.
108
# spent 8µs within Attribute::Handlers::BEGIN@108 which was called: # once (8µs+0s) by App::Rad::Help::BEGIN@2 at line 118
BEGIN {
1091100ns my $delayed;
110
# spent 2µs within Attribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES which was called: # once (2µs+0s) by attributes::import at line 68 of attributes.pm
sub Attribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES {
11111µs $delayed = \&Attribute::Handlers::_TEST_::t != $_[1];
11212µs return ();
113 }
1142115µs2863µs
# spent 746µs (491+255) within Attribute::Handlers::BEGIN@114 which was called: # once (491µs+255µs) by App::Rad::Help::BEGIN@2 at line 114
sub Attribute::Handlers::_TEST_::t :T { }
# spent 746µs making 1 call to Attribute::Handlers::BEGIN@114 # spent 117µs making 1 call to attributes::import
1151634µs
# spent 13µs within Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:115] which was called 15 times, avg 860ns/call: # 13 times (11µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 146, avg 815ns/call # once (2µs+0s) by Attribute::Handlers::CHECK at line 243 # once (500ns+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 171
*_delayed_name_resolution = sub() { $delayed };
11612µs undef &Attribute::Handlers::_TEST_::MODIFY_CODE_ATTRIBUTES;
11713µs undef &Attribute::Handlers::_TEST_::t;
118166µs18µs}
# spent 8µs making 1 call to Attribute::Handlers::BEGIN@108
119
120
# spent 22µs (11+11) within Attribute::Handlers::_resolve_lastattr which was called: # once (11µs+11µs) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 171
sub _resolve_lastattr {
1211300ns return unless $lastattr{ref};
12212µs111µs my $sym = findsym @lastattr{'pkg','ref'}
# spent 11µs making 1 call to Attribute::Handlers::findsym
123 or die "Internal error: $lastattr{pkg} symbol went missing";
1241400ns my $name = *{$sym}{NAME};
1251400ns warn "Declaration of $name attribute in package $lastattr{pkg} may clash with future reserved word\n"
126 if $^W and $name !~ /[A-Z]/;
1271800ns foreach ( @{$validtype{$lastattr{type}}} ) {
1282208µs222µs
# spent 14µs (5+8) within Attribute::Handlers::BEGIN@128 which was called: # once (5µs+8µs) by App::Rad::Help::BEGIN@2 at line 128
no strict 'refs';
# spent 14µs making 1 call to Attribute::Handlers::BEGIN@128 # spent 8µs making 1 call to strict::unimport
12915µs *{"$lastattr{pkg}::_ATTR_${_}_${name}"} = $lastattr{ref};
130 }
13113µs %lastattr = ();
132}
133
134sub AUTOLOAD {
135 return if $AUTOLOAD =~ /::DESTROY$/;
136 my ($class) = $AUTOLOAD =~ m/(.*)::/g;
137 $AUTOLOAD =~ m/_ATTR_(.*?)_(.*)/ or
138 croak "Can't locate class method '$AUTOLOAD' via package '$class'";
139 croak "Attribute handler '$2' doesn't handle $1 attributes";
140}
141
14212µs1400nsmy $builtin = qr/lvalue|method|locked|unique|shared/;
# spent 400ns making 1 call to Attribute::Handlers::CORE:qr
143
144
# spent 9µs within Attribute::Handlers::_gen_handler_AH_ which was called 4 times, avg 2µs/call: # 4 times (9µs+0s) by App::Rad::Help::BEGIN@2 at line 205, avg 2µs/call
sub _gen_handler_AH_() {
145
# spent 337µs (245+92) within Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] which was called 13 times, avg 26µs/call: # 13 times (245µs+92µs) by attributes::import at line 68 of attributes.pm, avg 26µs/call
return sub {
1461311µs1311µs _resolve_lastattr if _delayed_name_resolution;
# spent 11µs making 13 calls to Attribute::Handlers::__ANON__[Attribute/Handlers.pm:115], avg 815ns/call
1471314µs my ($pkg, $ref, @attrs) = @_;
1481329µs my (undef, $filename, $linenum) = caller 2;
149137µs foreach (@attrs) {
1501250µs1229µs my ($attr, $data) = /^([a-z_]\w*)(?:[(](.*)[)])?$/is or next;
# spent 29µs making 12 calls to Attribute::Handlers::CORE:match, avg 2µs/call
151124µs if ($attr eq 'ATTR') {
1522258µs220µs
# spent 13µs (6+7) within Attribute::Handlers::BEGIN@152 which was called: # once (6µs+7µs) by App::Rad::Help::BEGIN@2 at line 152
no strict 'refs';
# spent 13µs making 1 call to Attribute::Handlers::BEGIN@152 # spent 7µs making 1 call to strict::unimport
1531100ns $data ||= "ANY";
15414µs1500ns $raw{$ref} = $data =~ s/\s*,?\s*RAWDATA\s*,?\s*//;
# spent 500ns making 1 call to Attribute::Handlers::CORE:subst
15512µs1100ns $phase{$ref}{BEGIN} = 1
# spent 100ns making 1 call to Attribute::Handlers::CORE:subst
156 if $data =~ s/\s*,?\s*(BEGIN)\s*,?\s*//;
15712µs1200ns $phase{$ref}{INIT} = 1
# spent 200ns making 1 call to Attribute::Handlers::CORE:subst
158 if $data =~ s/\s*,?\s*(INIT)\s*,?\s*//;
15912µs1100ns $phase{$ref}{END} = 1
# spent 100ns making 1 call to Attribute::Handlers::CORE:subst
160 if $data =~ s/\s*,?\s*(END)\s*,?\s*//;
161 $phase{$ref}{CHECK} = 1
162 if $data =~ s/\s*,?\s*(CHECK)\s*,?\s*//
16313µs10s || ! keys %{$phase{$ref}};
# spent 0s making 1 call to Attribute::Handlers::CORE:subst
164 # Added for cleanup to not pollute next call.
1651300ns (%lastattr = ()),
166 croak "Can't have two ATTR specifiers on one subroutine"
167 if keys %lastattr;
168 croak "Bad attribute type: ATTR($data)"
1691300ns unless $validtype{$data};
17011µs %lastattr=(pkg=>$pkg,ref=>$ref,type=>$data);
17112µs223µs _resolve_lastattr unless _delayed_name_resolution;
# spent 22µs making 1 call to Attribute::Handlers::_resolve_lastattr # spent 500ns making 1 call to Attribute::Handlers::__ANON__[Attribute/Handlers.pm:115]
172 }
173 else {
174113µs my $type = ref $ref;
1751130µs118µs my $handler = $pkg->can("_ATTR_${type}_${attr}");
# spent 8µs making 11 calls to UNIVERSAL::can, avg 764ns/call
176112µs next unless $handler;
177 my $decl = [$pkg, $ref, $attr, $data,
1781122µs $raw{$handler}, $phase{$handler}, $filename, $linenum];
179114µs foreach my $gphase (@global_phases) {
180 _apply_handler_AH_($decl,$gphase)
1814423µs1121µs if $global_phases{$gphase} <= $global_phase;
# spent 21µs making 11 calls to Attribute::Handlers::_apply_handler_AH_, avg 2µs/call
182 }
183116µs if ($global_phase != 0) {
184 # if _gen_handler_AH_ is being called after
185 # CHECK it's for a lexical, so make sure
186 # it didn't want to run anything later
187
188 local $Carp::CarpLevel = 2;
189 carp "Won't be able to apply END handler"
190 if $phase{$handler}{END};
191 }
192 else {
193114µs push @declarations, $decl
194 }
195 }
196126µs $_ = undef;
197 }
1982543µs return grep {defined && !/$builtin/} @attrs;
199 }
200412µs}
201
202{
203393µs220µs
# spent 13µs (5+7) within Attribute::Handlers::BEGIN@203 which was called: # once (5µs+7µs) by App::Rad::Help::BEGIN@2 at line 203
no strict 'refs';
# spent 13µs making 1 call to Attribute::Handlers::BEGIN@203 # spent 7µs making 1 call to strict::unimport
204 *{"Attribute::Handlers::UNIVERSAL::MODIFY_${_}_ATTRIBUTES"} =
205111µs49µs _gen_handler_AH_ foreach @{$validtype{ANY}};
# spent 9µs making 4 calls to Attribute::Handlers::_gen_handler_AH_, avg 2µs/call
206}
20716µspush @UNIVERSAL::ISA, 'Attribute::Handlers::UNIVERSAL'
208 unless grep /^Attribute::Handlers::UNIVERSAL$/, @UNIVERSAL::ISA;
209
210
# spent 3.12ms (1.54+1.58) within Attribute::Handlers::_apply_handler_AH_ which was called 44 times, avg 71µs/call: # 11 times (1.46ms+1.58ms) by Attribute::Handlers::CHECK at line 245, avg 276µs/call # 11 times (34µs+0s) by Attribute::Handlers::END at line 260, avg 3µs/call # 11 times (32µs+0s) by Attribute::Handlers::INIT at line 252, avg 3µs/call # 11 times (21µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 181, avg 2µs/call
sub _apply_handler_AH_ {
2114425µs my ($declaration, $phase) = @_;
2124443µs my ($pkg, $ref, $attr, $data, $raw, $handlerphase, $filename, $linenum) = @$declaration;
2134468µs return unless $handlerphase->{$phase};
214 # print STDERR "Handling $attr on $ref in $phase with [$data]\n";
215115µs my $type = ref $ref;
216118µs my $handler = "_ATTR_${type}_${attr}";
2171157µs111.19ms my $sym = findsym($pkg, $ref);
# spent 1.19ms making 11 calls to Attribute::Handlers::findsym, avg 108µs/call
218113µs $sym ||= $type eq 'CODE' ? 'ANON' : 'LEXICAL';
219283µs232µs
# spent 19µs (6+13) within Attribute::Handlers::BEGIN@219 which was called: # once (6µs+13µs) by App::Rad::Help::BEGIN@2 at line 219
no warnings;
# spent 19µs making 1 call to Attribute::Handlers::BEGIN@219 # spent 13µs making 1 call to warnings::unimport
220116µs if (!$raw && defined($data)) {
221115µs if ($data ne '') {
22211384µs my $evaled = eval("package $pkg; no warnings; no strict;
# spent 116µs executing statements in string eval
# includes 18µs spent executing 2 calls to 3 subs defined therein. # spent 111µs executing statements in string eval
# includes 17µs spent executing 2 calls to 3 subs defined therein. # spent 101µs executing statements in string eval
# includes 19µs spent executing 2 calls to 3 subs defined therein. # spent 93µs executing statements in string eval
# includes 18µs spent executing 2 calls to 3 subs defined therein. # spent 89µs executing statements in string eval
# includes 19µs spent executing 2 calls to 3 subs defined therein. # spent 86µs executing statements in string eval
# includes 16µs spent executing 2 calls to 3 subs defined therein. # spent 86µs executing statements in string eval
# includes 18µs spent executing 2 calls to 3 subs defined therein. # spent 84µs executing statements in string eval
# includes 16µs spent executing 2 calls to 3 subs defined therein. # spent 82µs executing statements in string eval
# includes 21µs spent executing 2 calls to 3 subs defined therein. # spent 80µs executing statements in string eval
# includes 19µs spent executing 2 calls to 3 subs defined therein. # spent 78µs executing statements in string eval
# includes 17µs spent executing 2 calls to 3 subs defined therein.
223 local \$SIG{__WARN__}=sub{die}; [$data]");
224115µs $data = $evaled unless $@;
225 }
226 else { $data = undef }
227 }
228 $pkg->$handler($sym,
2291135µs1148µs (ref $sym eq 'GLOB' ? *{$sym}{ref $ref}||$ref : $ref),
# spent 48µs making 11 calls to UNIVERSAL::Help, avg 4µs/call
230 $attr,
231 $data,
232 $phase,
233 $filename,
234 $linenum,
235 );
2361129µs return 1;
237}
238
239{
2402105µs218µs
# spent 12µs (5+6) within Attribute::Handlers::BEGIN@240 which was called: # once (5µs+6µs) by App::Rad::Help::BEGIN@2 at line 240
no warnings 'void';
# spent 12µs making 1 call to Attribute::Handlers::BEGIN@240 # spent 6µs making 1 call to warnings::unimport
241
# spent 3.07ms (39µs+3.04) within Attribute::Handlers::CHECK which was called: # once (39µs+3.04ms) by main::RUNTIME at line 0 of /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
CHECK {
2421200ns $global_phase++;
24312µs12µs _resolve_lastattr if _delayed_name_resolution;
24416µs foreach my $decl (@declarations) {
2451115µs113.03ms _apply_handler_AH_($decl, 'CHECK');
# spent 3.03ms making 11 calls to Attribute::Handlers::_apply_handler_AH_, avg 276µs/call
246 }
247 }
248
249
# spent 57µs (25+32) within Attribute::Handlers::INIT which was called: # once (25µs+32µs) by main::RUNTIME at line 0 of /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
INIT {
2501700ns $global_phase++;
25115µs foreach my $decl (@declarations) {
2521111µs1132µs _apply_handler_AH_($decl, 'INIT');
# spent 32µs making 11 calls to Attribute::Handlers::_apply_handler_AH_, avg 3µs/call
253 }
254 }
255}
256
2571200ns
# spent 61µs (27+34) within Attribute::Handlers::END which was called: # once (27µs+34µs) by main::RUNTIME at line 0 of /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
END {
2581500ns $global_phase++;
25914µs foreach my $decl (@declarations) {
2601116µs1134µs _apply_handler_AH_($decl, 'END');
# spent 34µs making 11 calls to Attribute::Handlers::_apply_handler_AH_, avg 3µs/call
261 }
262}
263
264111µs1;
265__END__
 
# spent 29µs within Attribute::Handlers::CORE:match which was called 12 times, avg 2µs/call: # 12 times (29µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 150, avg 2µs/call
sub Attribute::Handlers::CORE:match; # opcode
# spent 2µs within Attribute::Handlers::CORE:qr which was called 2 times, avg 900ns/call: # once (1µs+0s) by App::Rad::Help::BEGIN@2 at line 55 # once (400ns+0s) by App::Rad::Help::BEGIN@2 at line 142
sub Attribute::Handlers::CORE:qr; # opcode
# spent 900ns within Attribute::Handlers::CORE:subst which was called 5 times, avg 180ns/call: # once (500ns+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 154 # once (200ns+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 157 # once (100ns+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 159 # once (100ns+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 155 # once (0s+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/Attribute/Handlers.pm:199] at line 163
sub Attribute::Handlers::CORE:subst; # opcode