consolidate regexes

Yitzchak Scott-Thoennes sthoenna at gmail.com
Tue Feb 25 17:14:01 GMT 2014


On Tue, Feb 25, 2014 at 6:59 AM, Aaron Crane <perl at aaroncrane.co.uk> wrote:>
> The regexes generated by Regexp::Trie will almost certainly be slower
> to execute than the regex you'd get with the naive approach:
>
> my $pattern = join '|', map quotemeta, @fixed_strings;
> my $rx = qr/$pattern/;

N.B. http://perlmonks.org/?node_id=670558:
> I ran in to this too and talked with demerphq about it. It looks to me like when an alternation series gets too long, it uses BRANCHJ instead of BRANCH, because LONGJMP is needed to jump to the end of the series. And I think the trie optimization only kicks in for BRANCHes. This may be simple to fix or it may not. Any hardy souls out there want to dive in?
>
> A simple testcase: compare
>
> perl -we'use re "debug"; qr/@{[join"|","a000".."u999"]}/'
>
> to
>
> perl -we'use re "debug"; qr/@{[join"|","a000".."v999"]}/'

This is still an issue in 5.14; dunno about later than that.



More information about the london.pm mailing list