in reply to Re: About Greedy and Non-Greedy Regular Expressions
in thread About Greedy and Non-Greedy Regular Expressions

A test with longer strings shows that the non-greedy regex can be about 25% faster (with perl 5.8.7). My test case regex is designed to match starting near the beginning of the string and ending in the middle.
$ perl -MBenchmark=cmpthese -ne'chomp; $allwords.="/$_"; END{ cmpthese(-3, { "Greedy"=>sub { $allwords=~m{/abbreviate.+/initial/}; }, "Nongreedy"=>sub { $allwords=~m{/abbreviate.+?/initial/}; } } ); }' /usr/dict/words
The result is:
           Rate    Greedy Nongreedy
Greedy    439/s        --      -22%
Nongreedy 563/s       28%        --
Of course, to repeat this test you'll need /usr/dict/words, and it has to contain abbreviate and initial.

These results are with perl 5.8.7 - I'd be curious to see what happens with 5.8.10, since RE improvements could happen any time.


Mike