The explanation is that the fast ones benefit from a start-up optimization. For example, with the added x it knows there must be an x in the subject and it does a preliminary check. Same for y. Not the same for an added a. If you run with no_start_optimize the fast ones will be slow and the slowness in all cases is because it is checking a rather large search tree. Regards, Philip
On Fri, 20 Nov 2020 at 11:29, Ralf Junker <ralfjun...@gmx.de> wrote: > Below is a test file for pcre2test which shows matching times which I > cannot explain. I run it on Windows like this: > > pcre2test -tm 1 tests.txt > > If I understand this correctly, at least the atomic grouping pattern > should run fast: https://www.regular-expressions.info/catastrophic.html > > Interestingly, with JIT all patterns run instantly in 0 ms: > > pcre2test -jit -tm 1 tests.txt > > I am using PCRE2 SVN 1284. > > Could anyone jump in with an explanation? > > Many thanks, > > Ralf > > ---------- > > # Match is instantaneous (0 milliseconds). > > /aa.*?bb/ > \[aa bb ]{200} > > # Failure with extra letter "x" is also extremely fast (0 milliseconds). > > /aa.*?bbx/ > \[aa bb ]{200} > > # Failure with extra letter "y" is just as fast (0 milliseconds). > > /aa.*?bby/ > \[aa bb ]{200} > > # Failure with extra letter "a" is very slow (> 6000 ms). > > /aa.*?bba/ > \[aa bb ]{200} > > # Failure with extra letter "b" is also very slow (> 6000 ms). > > /aa.*?bbb/ > \[aa bb ]{200} > > # Atomic grouping does not help (each > 6000 ms). > > /aa(?>.*?bba)/ > \[aa bb ]{200} > > /aa(?>.*?bbb)/ > \[aa bb ]{200} > > # Is this expected behavior? Suggestions? Thank you! > > > -- > ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev > -- ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev