You need to be careful with your testing. Executing a function which has the regexp will result in non-deterministic results (the function call itself will probably take longer to run than the actual regexp being executed).
A revised test: http://dev.jquery.com/~john/test/regexp.html Results (New vs. Old): FF 3.5 123ms 119ms SF 4.0 8ms 11ms IE 6.0 220ms 490ms As you can see, the new engines do optimize this quite well - but Internet Explorer is definitely a different matter. --John On Mon, Jul 20, 2009 at 10:28 AM, Ariel Flesler <afles...@gmail.com> wrote: > You're right, the regexps was too simple. I updated the test with longer > and more complex expression and the time is still the same. > > I agree about caching regexps that are re-used in many places, obviously. > Not so much about one-time expressions or strings. I'm really aware of how > the different interpreters work, but it seems to me that immutable literals > (strings, numbers, regexps) are the first thing I'd cache in a constant. > Maybe current interpreters do that already internally ? > > On Mon, Jul 20, 2009 at 12:56 PM, John Resig <jere...@gmail.com> wrote: > >> It has less to do with RegExps and more to do with inline objects. You'll >> note that I also moved inline functions out and declared them above. I'd, >> eventually, like to do the same with inline arrays and object literals. >> RegExp, Function, Array, and Objects shouldn't be re-declared on every >> function call (or on every iteration in a loop!). >> >> While very-simple RegExp optimizations may be a wash, performance-wise, (I >> note that your test regexp is only against a couple characters and doesn't >> even use a capturing expression) the code simplification and minification >> benefits are very real. Going through this process I was able to remove a >> large number of duplicate RegExp - and that's always a good thing. >> >> --John >> >> >> On Mon, Jul 20, 2009 at 9:20 AM, Ariel Flesler <afles...@gmail.com>wrote: >> >>> >>> Hi >>> >>> I've been seeing the multiple commits for >>> http://dev.jquery.com/ticket/4111. >>> Moving regexps to local vars to cache them. >>> >>> I was wondering if this is a perfomance measure and if so, if there's >>> some benchmark out there to prove the gain. >>> I personally think these changes make the code more complicated and >>> longer. I'd rather see the regexp in place if I want to understand >>> what it does. >>> >>> I went ahead and created a benchmark for this: >>> http://benchmarker.flesler.com/regexp/run/ >>> >>> The conclusions were that there's absolutely no gain in speed except >>> on IE. Even on IE, it doesn't seem to be such a critic improvement and >>> it's slower the more you get away from the variables' scope chain (in >>> nested functions). >>> >>> Any opinion ? >>> >>> Cheers >>> -- >>> Ariel Flesler >>> >>> >> >> >> > > > -- > Ariel Flesler > http://flesler.blogspot.com > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---