2 things:

- Use the one called myBestTrim... that one, as the name indicates, is
the best version.
- A regex-based trim can do well for small strings (even more for
empty ones), but scales horribly.

They actually scale so badly that I had to remove the test called
'jQueryTrim' from the "large string suite". It took like x2-4 longer
than the rest.

I doubt the engines do create a new regexp each time they reach it.
It's a clear constant that they can cache.

IMO it's important to keep it balanced between short and long strings.
jQuery's actual trim (similar to yours) causes problems when doing
stuff like:

$( some_long_ahah_response )....


Cheers

P.S: I knew you'd be throwin' in your super revolutionary version of
it.. so predictable :-P


On Tue, Nov 4, 2008 at 2:39 PM, Andrea Giammarchi
<[EMAIL PROTECTED]> wrote:
> jQuery core ready implementation:
>
> trim: function( re ){
>         return function( text ){
>             return ( text || "" ).replace( re, "" )
>         }
>     }( /^\s+|\s+$/g ),
>
> :-)
>
> On Tue, Nov 4, 2008 at 5:35 PM, Andrea Giammarchi
> <[EMAIL PROTECTED]> wrote:
>>
>> It's really weird that a manual implementation of a regexp, that should be
>> executed in core and should basically perform a really similar task you are
>> performing manually, is faster ...
>>
>> I wonder if we really need an "error prone" code instead of something like
>> this:
>>
>> $.trim = function(RegExp){
>>     return function(String){return String.replace(RegExp, "")}
>> }(/^\s+|\s+$/g);
>>
>> avoiding the creation of a new regexp each time and considering new JS
>> engines "they" are offering to us.
>> Above function, as example, performs about 1.5 times faster than your
>> proposal in my FireFox 3
>>
>> $ = {};
>> $.trim = function(RegExp){
>>     return function(String){return String.replace(RegExp, "")}
>> }(/^\s+|\s+$/g);
>>
>> var trim = (function(){
>>     var ws = {},
>>         chars = '
>> \n\r\t\v\f\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
>>     for(var i = 0; i < chars.length; i++ )
>>         ws[chars.charAt(i)] = true;
>>
>>     return function( str ){
>>         var s = -1,
>>             e = str.length;
>>         while( ws[str.charAt(--e)] );
>>         while( s++ !== e && ws[str.charAt(s)] );
>>         return str.substring( s, e+1 );
>>     };
>> })();
>>
>> for(var i = 0, s = "", t = new Date; i < 100000; i++)
>>     trim(s);
>> alert(new Date - t); // 501
>>
>>
>> for(var i = 0, s = "", t = new Date; i < 100000; i++)
>>     $.trim(s);
>> alert(new Date - t); // 284
>>
>> Maybe we need more exhaustive tests?
>>
>> Regards
>>
>> On Tue, Nov 4, 2008 at 5:00 PM, chris thatcher
>> <[EMAIL PROTECTED]> wrote:
>>>
>>> Nice, I've been using Steves trim12 for awhile, I guess I hadn't seen
>>> your earlier blog.  Is there are significant difference in the time for
>>> trimming a large number of small strings versus a single large string?  Just
>>> curious, but good work.
>>>
>>> +1
>>>
>>> Thatcher
>>>
>>> On Tue, Nov 4, 2008 at 11:44 AM, Ariel Flesler <[EMAIL PROTECTED]>
>>> wrote:
>>>>
>>>>
>>>> http://groups.google.com/group/jquery-en/browse_thread/thread/09abbc3bc6e14cdd
>>>>
>>>> Thoughts on this ? can you find any flaw ?
>>>> Should it get to the core ?
>>>>
>>>> --
>>>> Ariel Flesler
>>>> http://flesler.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>> Christopher Thatcher
>>>
>>>
>>
>
>
> >
>



-- 
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 [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to