AW: Re: Regex help needed...
ambassador at fourthworld.com
Sat Jan 30 21:01:33 EST 2016
Paul Dupuis wrote:
> Wow. I would not have expected such a significant difference. Regex
> has been around a long time and lots of smart computer science types
> has spent time coming up with ways to optimize its performance for
> pattern matching. I assumed (falsely) that regex based filters in LC
> would be on par or even superior than a custom function using chunks.
> This leads me to:
> 1) wondering if LC's hooks to whatever regex tool they are using under
> the hood is a good as it should be
> 2) planning on rewriting my code to use chunks.
One of the reasons for my seemingly-obsessive benchmarking is to learn
about what goes on under the hood, and to try to anticipate it when
choosing among different algos.
LC does such a good job of shielding us from what goes on under the hood
that we often forget that the relationship between the number of lines
we write and the number of machine instructions our scripts invoke may
differ broadly depending on the statement.
My favorite example is: set the scroll of field 1 to 100 -- seems simple
enough, but having written scrollbar management routines in C back in
the pre-Cocoa days I learned that a *tremendous* number of low-level
routines come into play with that one simple line of script. LC makes
it easy to take this stuff for granted, since it does all the heavy lifting.
Same with regex.
The beauty of regex is that it's a very generalized solution. The
downside of regex is that it's a very generalized solution. ;)
Generalized options can provide convenience, but often at the cost of
Purpose-built solutions are usually much faster than generalized ones,
and with LC's chunk expressions they're fun to write too. :)
There are times when regex will outperform chunk expressions, though, so
I would caution against rewriting everything. Benchmarking is the key,
and some day I will have done enough to be able to come up with a small
set of useful rules as to when to use chunks and when to use regex. But
at the moment, it's half hunch and half benchmarking to confirm the hunch.
Fourth World Systems
Software Design and Development for the Desktop, Mobile, and the Web
Ambassador at FourthWorld.com http://www.FourthWorld.com
More information about the Use-livecode