← Index
NYTProf Performance Profile   « line view »
For /Users/timbo/perl5/perlbrew/perls/perl-5.18.2/bin/perlcritic
  Run on Sat Mar 19 22:12:22 2016
Reported on Sat Mar 19 22:14:13 2016

Filename/Users/timbo/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2/Perl/Critic/Annotation.pm
StatementsExecuted 12520 statements in 71.5ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
511143.8ms53.0msPerl::Critic::Annotation::::_parse_annotationPerl::Critic::Annotation::_parse_annotation
1441114.3ms1.77sPerl::Critic::Annotation::::create_annotationsPerl::Critic::Annotation::create_annotations
9226519.07ms12.3msPerl::Critic::Annotation::::CORE:matchPerl::Critic::Annotation::CORE:match (opcode)
51114.92ms85.7msPerl::Critic::Annotation::::_initPerl::Critic::Annotation::_init
9175414.23ms4.23msPerl::Critic::Annotation::::CORE:regcompPerl::Critic::Annotation::CORE:regcomp (opcode)
5111953µs7.61msPerl::Critic::Annotation::::_is_single_line_annotation_on_simple_statementPerl::Critic::Annotation::_is_single_line_annotation_on_simple_statement
20831495µs495µsPerl::Critic::Annotation::::CORE:qrPerl::Critic::Annotation::CORE:qr (opcode)
5111429µs86.1msPerl::Critic::Annotation::::newPerl::Critic::Annotation::new
5111152µs152µsPerl::Critic::Annotation::::disabled_policiesPerl::Critic::Annotation::disabled_policies
5111104µs104µsPerl::Critic::Annotation::::effective_rangePerl::Critic::Annotation::effective_range
511196µs96µsPerl::Critic::Annotation::::disables_all_policiesPerl::Critic::Annotation::disables_all_policies
11115µs15µsPerl::Critic::Annotation::::BEGIN@10Perl::Critic::Annotation::BEGIN@10
11110µs16µsPerl::Critic::Annotation::::BEGIN@17Perl::Critic::Annotation::BEGIN@17
1118µs378µsPerl::Critic::Annotation::::BEGIN@15Perl::Critic::Annotation::BEGIN@15
1117µs26µsPerl::Critic::Annotation::::BEGIN@19Perl::Critic::Annotation::BEGIN@19
1117µs28µsPerl::Critic::Annotation::::BEGIN@14Perl::Critic::Annotation::BEGIN@14
1117µs18µsPerl::Critic::Annotation::::BEGIN@11Perl::Critic::Annotation::BEGIN@11
1117µs314µsPerl::Critic::Annotation::::BEGIN@18Perl::Critic::Annotation::BEGIN@18
1117µs11µsPerl::Critic::Annotation::::BEGIN@12Perl::Critic::Annotation::BEGIN@12
0000s0sPerl::Critic::Annotation::::disables_linePerl::Critic::Annotation::disables_line
0000s0sPerl::Critic::Annotation::::disables_policyPerl::Critic::Annotation::disables_policy
0000s0sPerl::Critic::Annotation::::elementPerl::Critic::Annotation::element
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1##############################################################################
2# $URL$
3# $Date$
4# $Author$
5# $Revision$
6##############################################################################
7
8package Perl::Critic::Annotation;
9
10242µs115µs
# spent 15µs within Perl::Critic::Annotation::BEGIN@10 which was called: # once (15µs+0s) by Perl::Critic::Document::BEGIN@24 at line 10
use 5.006001;
# spent 15µs making 1 call to Perl::Critic::Annotation::BEGIN@10
11219µs228µs
# spent 18µs (7+11) within Perl::Critic::Annotation::BEGIN@11 which was called: # once (7µs+11µs) by Perl::Critic::Document::BEGIN@24 at line 11
use strict;
# spent 18µs making 1 call to Perl::Critic::Annotation::BEGIN@11 # spent 11µs making 1 call to strict::import
12223µs216µs
# spent 11µs (7+5) within Perl::Critic::Annotation::BEGIN@12 which was called: # once (7µs+5µs) by Perl::Critic::Document::BEGIN@24 at line 12
use warnings;
# spent 11µs making 1 call to Perl::Critic::Annotation::BEGIN@12 # spent 5µs making 1 call to warnings::import
13
14225µs249µs
# spent 28µs (7+21) within Perl::Critic::Annotation::BEGIN@14 which was called: # once (7µs+21µs) by Perl::Critic::Document::BEGIN@24 at line 14
use Carp qw(confess);
# spent 28µs making 1 call to Perl::Critic::Annotation::BEGIN@14 # spent 21µs making 1 call to Exporter::import
15224µs2749µs
# spent 378µs (8+371) within Perl::Critic::Annotation::BEGIN@15 which was called: # once (8µs+371µs) by Perl::Critic::Document::BEGIN@24 at line 15
use English qw(-no_match_vars);
# spent 378µs making 1 call to Perl::Critic::Annotation::BEGIN@15 # spent 371µs making 1 call to English::import
16
17223µs222µs
# spent 16µs (10+6) within Perl::Critic::Annotation::BEGIN@17 which was called: # once (10µs+6µs) by Perl::Critic::Document::BEGIN@24 at line 17
use Perl::Critic::PolicyFactory;
# spent 16µs making 1 call to Perl::Critic::Annotation::BEGIN@17 # spent 6µs making 1 call to Perl::Critic::PolicyFactory::import
18223µs2620µs
# spent 314µs (7+307) within Perl::Critic::Annotation::BEGIN@18 which was called: # once (7µs+307µs) by Perl::Critic::Document::BEGIN@24 at line 18
use Perl::Critic::Utils qw(:characters hashify);
# spent 314µs making 1 call to Perl::Critic::Annotation::BEGIN@18 # spent 307µs making 1 call to Exporter::import
192828µs246µs
# spent 26µs (7+19) within Perl::Critic::Annotation::BEGIN@19 which was called: # once (7µs+19µs) by Perl::Critic::Document::BEGIN@24 at line 19
use Readonly;
# spent 26µs making 1 call to Perl::Critic::Annotation::BEGIN@19 # spent 19µs making 1 call to Exporter::import
20
21#-----------------------------------------------------------------------------
22
231600nsour $VERSION = '1.121';
24
2512µs131µsReadonly::Scalar my $LAST_ELEMENT => -1;
# spent 31µs making 1 call to Readonly::Scalar
26
27#=============================================================================
28# CLASS methods
29
30
# spent 1.77s (14.3ms+1.76) within Perl::Critic::Annotation::create_annotations which was called 144 times, avg 12.3ms/call: # 144 times (14.3ms+1.76s) by Perl::Critic::Document::process_annotations at line 403 of Perl/Critic/Document.pm, avg 12.3ms/call
sub create_annotations {
3114473µs my ($class, $doc) = @_;
32
33144113µs my @annotations = ();
34144340µs1441.66s my $comment_elements_ref = $doc->find('PPI::Token::Comment') || return;
# spent 1.66s making 144 calls to Perl::Critic::Document::find, avg 11.6ms/call
35144803µs144402µs my $annotation_rx = qr{\A (?: [#]! .*? )? \s* [#][#] \s* no \s+ critic}xms;
# spent 402µs making 144 calls to Perl::Critic::Annotation::CORE:qr, avg 3µs/call
36205417.0ms573012.4ms for my $annotation_element ( grep { $_ =~ $annotation_rx } @{$comment_elements_ref} ) {
# spent 7.63ms making 1910 calls to Perl::Critic::Annotation::CORE:match, avg 4µs/call # spent 3.00ms making 1910 calls to PPI::Token::content, avg 2µs/call # spent 1.76ms making 1910 calls to Perl::Critic::Annotation::CORE:regcomp, avg 924ns/call
3751178µs5186.1ms push @annotations, Perl::Critic::Annotation->new( -element => $annotation_element);
# spent 86.1ms making 51 calls to Perl::Critic::Annotation::new, avg 1.69ms/call
38 }
39
40144586µs return @annotations;
41}
42
43#-----------------------------------------------------------------------------
44
45
# spent 86.1ms (429µs+85.7) within Perl::Critic::Annotation::new which was called 51 times, avg 1.69ms/call: # 51 times (429µs+85.7ms) by Perl::Critic::Annotation::create_annotations at line 37, avg 1.69ms/call
sub new {
465154µs my ($class, @args) = @_;
475199µs my $self = bless {}, $class;
4851109µs5185.7ms $self->_init(@args);
# spent 85.7ms making 51 calls to Perl::Critic::Annotation::_init, avg 1.68ms/call
4951131µs return $self;
50}
51
52#=============================================================================
53# OBJECT methods
54
55
# spent 85.7ms (4.92+80.8) within Perl::Critic::Annotation::_init which was called 51 times, avg 1.68ms/call: # 51 times (4.92ms+80.8ms) by Perl::Critic::Annotation::new at line 48, avg 1.68ms/call
sub _init {
565148µs my ($self, %args) = @_;
5751201µs5133µs my $annotation_element = $args{-element} || confess '-element argument is required';
# spent 33µs making 51 calls to PPI::Util::TRUE, avg 639ns/call
585144µs $self->{_element} = $annotation_element;
59
6051159µs5153.0ms my %disabled_policies = _parse_annotation( $annotation_element );
# spent 53.0ms making 51 calls to Perl::Critic::Annotation::_parse_annotation, avg 1.04ms/call
615150µs $self->{_disables_all_policies} = %disabled_policies ? 0 : 1;
625133µs $self->{_disabled_policies} = \%disabled_policies;
63
64 # Grab surrounding nodes to determine the context.
65 # This determines whether the annotation applies to
66 # the current line or the block that follows.
6751141µs51710µs my $annotation_line = $annotation_element->logical_line_number();
# spent 710µs making 51 calls to PPI::Element::logical_line_number, avg 14µs/call
685199µs51315µs my $parent = $annotation_element->parent();
# spent 315µs making 51 calls to PPI::Element::parent, avg 6µs/call
6951266µs102209µs my $grandparent = $parent ? $parent->parent() : undef;
# spent 171µs making 51 calls to PPI::Element::parent, avg 3µs/call # spent 38µs making 51 calls to PPI::Util::TRUE, avg 735ns/call
70
71 # Handle case when it appears on the shebang line. In this
72 # situation, it only affects the first line, not the whole doc
7351200µs102317µs if ( $annotation_element =~ m{\A [#]!}xms) {
# spent 236µs making 51 calls to Perl::Critic::Annotation::CORE:match, avg 5µs/call # spent 81µs making 51 calls to PPI::Token::content, avg 2µs/call
74 $self->{_effective_range} = [$annotation_line, $annotation_line];
75 return $self;
76 }
77
78 # Handle single-line usage on simple statements. In this
79 # situation, it only affects the line that it appears on.
805189µs517.61ms if ( _is_single_line_annotation_on_simple_statement( $annotation_element )
# spent 7.61ms making 51 calls to Perl::Critic::Annotation::_is_single_line_annotation_on_simple_statement, avg 149µs/call
81 ) {
823238µs $self->{_effective_range} = [$annotation_line, $annotation_line];
8332103µs return $self;
84 }
85
86 # Handle single-line usage on compound statements. In this
87 # situation -- um -- I'm not sure how this works, but it does.
881922µs if ( ref $parent eq 'PPI::Structure::Block' ) {
89139µs if ( ref $grandparent eq 'PPI::Statement::Compound'
90 || ref $grandparent eq 'PPI::Statement::Sub' ) {
911219µs12290µs if ( $parent->logical_line_number() == $annotation_line ) {
# spent 290µs making 12 calls to PPI::Element::logical_line_number, avg 24µs/call
92617µs6104µs my $grandparent_line = $grandparent->logical_line_number();
# spent 104µs making 6 calls to PPI::Element::logical_line_number, avg 17µs/call
9367µs $self->{_effective_range} = [$grandparent_line, $grandparent_line];
94623µs return $self;
95 }
96 }
97 }
98
99
100 # Handle multi-line usage. This is either a "no critic" ..
101 # "use critic" region or a block where "no critic" is in effect
102 # until the end of the scope. The start is the always the "no
103 # critic" which we already found. So now we have to search for the end.
104134µs my $end = $annotation_element;
1051353µs1323µs my $use_critic = qr{\A \s* [#][#] \s* use \s+ critic}xms;
# spent 23µs making 13 calls to Perl::Critic::Annotation::CORE:qr, avg 2µs/call
106
107 SIB:
10813774µs42417.5ms while ( my $esib = $end->next_sibling() ) {
# spent 17.4ms making 216 calls to PPI::Element::next_sibling, avg 80µs/call # spent 110µs making 208 calls to PPI::Util::TRUE, avg 528ns/call
10920829µs $end = $esib; # keep track of last sibling encountered in this scope
110208736µs277375µs last SIB if $esib->isa('PPI::Token::Comment') && $esib =~ $use_critic;
# spent 209µs making 208 calls to UNIVERSAL::isa, avg 1µs/call # spent 103µs making 23 calls to Perl::Critic::Annotation::CORE:match, avg 4µs/call # spent 35µs making 23 calls to PPI::Token::content, avg 2µs/call # spent 28µs making 23 calls to Perl::Critic::Annotation::CORE:regcomp, avg 1µs/call
111 }
112
113 # PPI parses __END__ as a PPI::Statement::End, and everything following is
114 # a child of that statement. That means if we encounter an __END__, we
115 # need to descend into it and continue the analysis.
1161364µs1724µs if ( $end->isa( 'PPI::Statement::End' ) and my $kid = $end->child( 0 ) ) {
# spent 18µs making 13 calls to UNIVERSAL::isa, avg 1µs/call # spent 5µs making 2 calls to PPI::Node::child, avg 2µs/call # spent 1µs making 2 calls to PPI::Util::TRUE, avg 550ns/call
1172500ns $end = $kid;
118 SIB:
119236µs18200µs while ( my $esib = $end->next_sibling() ) {
# spent 196µs making 10 calls to PPI::Element::next_sibling, avg 20µs/call # spent 4µs making 8 calls to PPI::Util::TRUE, avg 500ns/call
12081µs $end = $esib;
121823µs88µs last SIB if $esib->isa( 'PPI::Token::Comment' ) &&
# spent 8µs making 8 calls to UNIVERSAL::isa, avg 963ns/call
122 $esib->content() =~ $use_critic;
123 }
124 }
125
126 # We either found an end or hit the end of the scope.
1271328µs13121µs my $ending_line = $end->logical_line_number();
# spent 121µs making 13 calls to PPI::Element::logical_line_number, avg 9µs/call
1281316µs $self->{_effective_range} = [$annotation_line, $ending_line];
1291352µs return $self;
130}
131
132#-----------------------------------------------------------------------------
133
134sub element {
135 my ($self) = @_;
136 return $self->{_element};
137}
138
139#-----------------------------------------------------------------------------
140
141
# spent 104µs within Perl::Critic::Annotation::effective_range which was called 51 times, avg 2µs/call: # 51 times (104µs+0s) by Perl::Critic::Document::add_annotation at line 435 of Perl/Critic/Document.pm, avg 2µs/call
sub effective_range {
1425114µs my $self = shift;
14351139µs return @{ $self->{_effective_range} };
144}
145
146#-----------------------------------------------------------------------------
147
148
# spent 152µs within Perl::Critic::Annotation::disabled_policies which was called 51 times, avg 3µs/call: # 51 times (152µs+0s) by Perl::Critic::Document::add_annotation at line 436 of Perl/Critic/Document.pm, avg 3µs/call
sub disabled_policies {
1495113µs my $self = shift;
15051180µs return keys %{ $self->{_disabled_policies} };
151}
152
153#-----------------------------------------------------------------------------
154
155sub disables_policy {
156 my ($self, $policy_name) = @_;
157 return 1 if $self->{_disabled_policies}->{$policy_name};
158 return 1 if $self->disables_all_policies();
159 return 0;
160}
161
162#-----------------------------------------------------------------------------
163
164
# spent 96µs within Perl::Critic::Annotation::disables_all_policies which was called 51 times, avg 2µs/call: # 51 times (96µs+0s) by Perl::Critic::Document::add_annotation at line 436 of Perl/Critic/Document.pm, avg 2µs/call
sub disables_all_policies {
1655115µs my ($self) = @_;
16651110µs return $self->{_disables_all_policies};
167}
168
169#-----------------------------------------------------------------------------
170
171sub disables_line {
172 my ($self, $line_number) = @_;
173 my $effective_range = $self->{_effective_range};
174 return 1 if $line_number >= $effective_range->[0]
175 and $line_number <= $effective_range->[$LAST_ELEMENT];
176 return 0;
177}
178
179#-----------------------------------------------------------------------------
180
181# Recognize a single-line annotation on a simple statement.
182
# spent 7.61ms (953µs+6.66) within Perl::Critic::Annotation::_is_single_line_annotation_on_simple_statement which was called 51 times, avg 149µs/call: # 51 times (953µs+6.66ms) by Perl::Critic::Annotation::_init at line 80, avg 149µs/call
sub _is_single_line_annotation_on_simple_statement {
1835118µs my ( $annotation_element ) = @_;
1845187µs51410µs my $annotation_line = $annotation_element->logical_line_number();
# spent 410µs making 51 calls to PPI::Element::logical_line_number, avg 8µs/call
185
186 # If there is no sibling, we are clearly not a single-line annotation of
187 # any sort.
18851252µs925.06ms my $sib = $annotation_element->sprevious_sibling()
# spent 5.04ms making 51 calls to PPI::Element::sprevious_sibling, avg 99µs/call # spent 27µs making 41 calls to PPI::Util::TRUE, avg 654ns/call
189 or return 0;
190
191 # The easy case: the sibling (whatever it is) is on the same line as the
192 # annotation.
19341138µs41660µs $sib->logical_line_number() == $annotation_line
# spent 660µs making 41 calls to PPI::Element::logical_line_number, avg 16µs/call
194 and return 1;
195
196 # If the sibling is a node, we may have an annotation on one line of a
197 # statement that was split over multiple lines. So we descend through the
198 # children, keeping the last significant child of each, until we bottom
199 # out. If the ultimate significant descendant is on the same line as the
200 # annotation, we accept the annotation as a single-line annotation.
2011280µs24171µs if ( $sib->isa( 'PPI::Node' ) &&
# spent 150µs making 12 calls to PPI::Element::logical_line_number, avg 12µs/call # spent 21µs making 12 calls to UNIVERSAL::isa, avg 2µs/call
202 $sib->logical_line_number() < $annotation_line
203 ) {
204123µs my $neighbor = $sib;
20512165µs60248µs while ( $neighbor->isa( 'PPI::Node' )
# spent 212µs making 16 calls to PPI::Node::schild, avg 13µs/call # spent 26µs making 28 calls to UNIVERSAL::isa, avg 939ns/call # spent 10µs making 16 calls to PPI::Util::TRUE, avg 625ns/call
206 and my $kid = $neighbor->schild( $LAST_ELEMENT ) ) {
207 $neighbor = $kid;
208 }
2091263µs24107µs if ( $neighbor &&
# spent 101µs making 12 calls to PPI::Element::logical_line_number, avg 8µs/call # spent 6µs making 12 calls to PPI::Util::TRUE, avg 517ns/call
210 $neighbor->logical_line_number() == $annotation_line
211 ) {
212 return 1;
213 }
214 }
215
216 # We do not understand any other sort of single-line annotation. Accepting
217 # the annotation as such (if it is) is Someone Else's Problem.
218921µs return 0;
219}
220
221#-----------------------------------------------------------------------------
222
223
# spent 53.0ms (43.8+9.28) within Perl::Critic::Annotation::_parse_annotation which was called 51 times, avg 1.04ms/call: # 51 times (43.8ms+9.28ms) by Perl::Critic::Annotation::_init at line 60, avg 1.04ms/call
sub _parse_annotation {
224
2255117µs my ($annotation_element) = @_;
226
227 #############################################################################
228 # This regex captures the list of Policy name patterns that are to be
229 # disabled. It is generally assumed that the element has already been
230 # verified as a no-critic annotation. So if this regex does not match,
231 # then it implies that all Policies are to be disabled.
232 #
23351178µs5169µs my $no_critic = qr{\#\# \s* no \s+ critic \s* (?:qw)? [("'] ([\s\w:,]+) }xms;
# spent 69µs making 51 calls to Perl::Critic::Annotation::CORE:qr, avg 1µs/call
234 # -------------------------- ------- ----- -----------
235 # | | | |
236 # "## no critic" with optional spaces | | |
237 # | | |
238 # Policy list may be prefixed with "qw" | |
239 # | |
240 # Optional Policy list must begin with one of these |
241 # |
242 # Capture entire Policy list (with delimiters) here
243 #
244 #############################################################################
245
2465123µs my @disabled_policy_names = ();
24751557µs153510µs if ( my ($patterns_string) = $annotation_element =~ $no_critic ) {
# spent 358µs making 51 calls to Perl::Critic::Annotation::CORE:match, avg 7µs/call # spent 77µs making 51 calls to PPI::Token::content, avg 2µs/call # spent 75µs making 51 calls to Perl::Critic::Annotation::CORE:regcomp, avg 1µs/call
248
249 # Compose the specified modules into a regex alternation. Wrap each
250 # in a no-capturing group to permit "|" in the modules specification.
251
25251387µs59130µs my @policy_name_patterns = grep { $_ ne $EMPTY }
# spent 130µs making 59 calls to Readonly::Scalar::FETCH, avg 2µs/call
253 split m{\s *[,\s] \s*}xms, $patterns_string;
25451240µs5164µs my $re = join $PIPE, map {"(?:$_)"} @policy_name_patterns;
# spent 64µs making 51 calls to Readonly::Scalar::FETCH, avg 1µs/call
25551572µs512.09ms my @site_policy_names = Perl::Critic::PolicyFactory::site_policy_names();
# spent 2.09ms making 51 calls to Perl::Critic::PolicyFactory::site_policy_names, avg 41µs/call
256724243.9ms143826.30ms @disabled_policy_names = grep {m/$re/ixms} @site_policy_names;
# spent 3.94ms making 7191 calls to Perl::Critic::Annotation::CORE:match, avg 548ns/call # spent 2.36ms making 7191 calls to Perl::Critic::Annotation::CORE:regcomp, avg 329ns/call
257
258 # It is possible that the Policy patterns listed in the annotation do not
259 # match any of the site policy names. This could happen when running
260 # on a machine that does not have the same set of Policies as the author.
261 # So we must return something here, otherwise all Policies will be
262 # disabled. We probably need to add a mechanism to (optionally) warn
263 # about this, just to help the author avoid writing invalid Policy names.
264
26551214µs if (not @disabled_policy_names) {
266 @disabled_policy_names = @policy_name_patterns;
267 }
268 }
269
27051288µs51190µs return hashify(@disabled_policy_names);
# spent 190µs making 51 calls to Perl::Critic::Utils::hashify, avg 4µs/call
271}
272
273#-----------------------------------------------------------------------------
274
27513µs1;
276
277__END__
 
# spent 12.3ms (9.07+3.20) within Perl::Critic::Annotation::CORE:match which was called 9226 times, avg 1µs/call: # 7191 times (3.94ms+0s) by Perl::Critic::Annotation::_parse_annotation at line 256, avg 548ns/call # 1910 times (4.63ms+3.00ms) by Perl::Critic::Annotation::create_annotations at line 36, avg 4µs/call # 51 times (280µs+77µs) by Perl::Critic::Annotation::_parse_annotation at line 247, avg 7µs/call # 51 times (155µs+81µs) by Perl::Critic::Annotation::_init at line 73, avg 5µs/call # 23 times (68µs+35µs) by Perl::Critic::Annotation::_init at line 110, avg 4µs/call
sub Perl::Critic::Annotation::CORE:match; # opcode
# spent 495µs within Perl::Critic::Annotation::CORE:qr which was called 208 times, avg 2µs/call: # 144 times (402µs+0s) by Perl::Critic::Annotation::create_annotations at line 35, avg 3µs/call # 51 times (69µs+0s) by Perl::Critic::Annotation::_parse_annotation at line 233, avg 1µs/call # 13 times (23µs+0s) by Perl::Critic::Annotation::_init at line 105, avg 2µs/call
sub Perl::Critic::Annotation::CORE:qr; # opcode
# spent 4.23ms within Perl::Critic::Annotation::CORE:regcomp which was called 9175 times, avg 461ns/call: # 7191 times (2.36ms+0s) by Perl::Critic::Annotation::_parse_annotation at line 256, avg 329ns/call # 1910 times (1.76ms+0s) by Perl::Critic::Annotation::create_annotations at line 36, avg 924ns/call # 51 times (75µs+0s) by Perl::Critic::Annotation::_parse_annotation at line 247, avg 1µs/call # 23 times (28µs+0s) by Perl::Critic::Annotation::_init at line 110, avg 1µs/call
sub Perl::Critic::Annotation::CORE:regcomp; # opcode