Following on from the previous replies here is a benchmark demonstrating the performance difference. Note though that with the test string the speed difference is only of the order of two times, not the 10 times described by OP.
use warnings; use strict; use Benchmark qw(cmpthese); my $target = 'This is a string used to test the time required for a gr +eedy match compared to a non-greedy match.'; my $greedy = qr/(\ba\b.*\bstring\b)/; my $non = qr/(\ba\b.*?\bstring\b)/; my ($matchG) = $target =~ $greedy; my ($matchN) = $target =~ $non; die "Matches generate different results\n" if $matchG ne $matchN; cmpthese ( -1, { 'Greedy' => sub {$target =~ $greedy;}, 'Non' => sub {$target =~ $non;} } ); Prints: Rate Greedy Non Greedy 162689/s -- -64% Non 456847/s 181% --
In reply to Re: Regex, capturing variables vs. speed
by GrandFather
in thread Regex, capturing variables vs. speed
by albert
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |