Interestingly, using a string is still faster than using a compiled regex (even when I wrap the string in (?:^...) like the compilation does).
#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my $re = qr/^ *(?:say|print)/; my $s = qq/(?^:^ *(?:say|print))/; open my $in, '-|', qw{ perldoc perlfunc } or die $!; my @lines = <$in>; push @lines, @lines for 1 .. 5; say scalar @lines; use Benchmark qw{ cmpthese }; my ($ir, $is); cmpthese(-3, { regex => sub { $ir = 0; /$re/ and ++$ir for @lines }, string => sub { $is = 0; /$s/ and ++$is for @lines }, }); $ir == $is or die; __END__ 259616 Rate regex string regex 13.5/s -- -23% string 17.6/s 31% --
Is it because of dereferencing of the regex object?
In reply to Re^3: Use global flag when declaring regular expressions with qr?
by choroba
in thread Use global flag when declaring regular expressions with qr?
by unmatched
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |