in reply to Regex, capturing variables vs. speed
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% --
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Regex, capturing variables vs. speed
by albert (Monk) on Oct 30, 2005 at 17:57 UTC | |
by robin (Chaplain) on Oct 30, 2005 at 20:31 UTC | |
by albert (Monk) on Oct 30, 2005 at 21:06 UTC | |
by GrandFather (Saint) on Oct 30, 2005 at 23:42 UTC |