use strict;
use warnings 'all';
use Benchmark 'cmpthese';
$::a = "foo-bar";
cmpthese -5 => {
sub => sub {$::a =~ /([-])/},
str => '$::a =~ /([-])/',
};
__END__
Benchmark: running str, sub for at least 5 CPU seconds...
str: 5 wallclock secs ( 5.34 usr + 0.00 sys = 5.34 CPU) @ 390154.68/s (n=2083426)
sub: 5 wallclock secs ( 5.13 usr + 0.00 sys = 5.13 CPU) @ 282139.18/s (n=1447374)
Rate sub str
sub 282139/s -- -28%
str 390155/s 38% --
####
my ($subcode, $subref);
if (ref $c eq 'CODE') {
$subcode = "sub { for (1 .. $n) { local \$_; package $pack; &\$c; } }";
$subref = eval $subcode;
}
else {
$subcode = "sub { for (1 .. $n) { local \$_; package $pack; $c;} }";
$subref = _doeval($subcode);
}
####
my $opts='-5 \\\\\\\\foo\\\\bar\\\\baz.exe';
####
my $opts=q!-5 '\\\\foo\\bar\\baz.exe'!;