Glenn, a possible optimization is to run the regex patterns on a
wchar_t string and not a byte string. It would eliminate all the mb*()
calls which are often called during backtracking, and represent a
major hit at run time.

Olga

On Tue, Oct 29, 2013 at 3:24 PM, Glenn Fowler <[email protected]> wrote:
> its a performance problem with the underlying regex
> whenever (...) groups are involved it has to work harder
> if you only care about *any* match vs the longest of the leftmost matches
> then prefix the pattern with ~(-g)
> which means "not greedy" or "minimal"
> this loop shows the time deterioration
>
> x=
> for ((i = 1; i <= 20; i++))
> do      x=x$x
>         time -f %E $SHELL -c "[[ x__${x}__x == *@(__+(+(x)?(_))__)* ]];
> printf '%d %2d ' $? $i"
> done
>
>
>
>
> On Tue, Oct 29, 2013 at 8:40 AM, Dan Rickhoff <[email protected]>
> wrote:
>>
>>
>> If this is a ksh bug, what ksh version should I upgrade to?
>>
>> On:
>>      OS: Red Hat Enterprise Linux Server release 6.1 (Santiago)
>>      ksh: version sh (AT&T Research) 93t+ 2010-06-21
>>
>> Elapsed time less than 2 tenths of a second:
>>
>> $ time -f ‘%E\n' ksh -e '[[ A__BBBBBBBB_CCCCC_Z_EEEE__F ==
>> *@(__+(+([A-Z0-9])?(_))__)* ]]'
>> 0:00.14
>>
>> However, if that string is extended by adding, say, seven more "Z"s, then
>> the elapsed mushrooms to almost 10 seconds.
>>
>> $ time -f '%E\n' ksh -e '[[ A__BBBBBBBB_CCCCC_ZZZZZZZZ_EEEE__F ==
>> *@(__+(+([A-Z0-9])?(_))__)* ]]'
>> 0:09.96
>>
>> This appears to be a ksh bug (a memory leak?), what ksh version must I
>> upgrade to to get past it?
>>
>> Please let me know if I should provide further information.
>>
>> Thanks,
>> Dan
>>
>> _______________________________________________
>> ast-users mailing list
>> [email protected]
>> http://lists.research.att.com/mailman/listinfo/ast-users
>>
>
>
> _______________________________________________
> ast-users mailing list
> [email protected]
> http://lists.research.att.com/mailman/listinfo/ast-users
>



-- 
      ,   _                                    _   ,
     { \/`o;====-    Olga Kryzhanovska   -====;o`\/ }
.----'-/`-/     [email protected]   \-`\-'----.
 `'-..-| /       http://twitter.com/fleyta     \ |-..-'`
      /\/\     Solaris/BSD//C/C++ programmer   /\/\
      `--`                                      `--`
_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users

Reply via email to