FF 3.6 Windows 764bit:
1000:
time1::: 0.0000394
*time1a: 0.000024199999999999995* - fastets
time2::: 0.0000338
time3::: 0.000024800000000000003

100:
time1::: 0.00005440000000000003
*time1a: 0.00003120000000000002*
time2::: 0.000049800000000000025
time3::: 0.00003960000000000003

10:
time1::: 0.00006180000000000004
*time1a: 0.00003120000000000002* - most likely to be used. same as 100
time2::: 0.000052200000000000036
time3::: 0.00004640000000000004
-----------
אריה גלזר
052-5348-561
5561


On Tue, Feb 23, 2010 at 17:08, Yann Leretaille
<yleretai...@googlemail.com>wrote:

> could somebody test this one with 100,100 & 10 Elements?
>
> My results:
> n
> FF 3.6, Linux, 64Bit FF 2.5.8,WinXP, 32Bit
> 1000
> time1::: 0.000033
> *time1a: 0.000020*
> time2::: 0.000030
> time3::: 0.000024time1::: 0.000055
> *time1a: 0.000036*
> time2::: 0.000048
> time3::: 0.000038
> 100
> time1::: 0.000045
> *time1a: 0.000027*
> time2::: 0.000040
> time3::: 0.000032time1::: 0.000058
> *time1a: 0.000037*
> time2::: 0.000051
> time3::: 0.000040
> 10
> time1::: 0.000052
> *time1a: 0.000026*
> time2::: 0.000045
> time3::: 0.000042**time1::: 0.000077
> *time1a: 0.000046*
> time2::: 0.000072
> time3::: 0.000059
>
>
>
> http://mootools.net/shell/J7ySB/
>
> On Mon, Feb 22, 2010 at 17:45, Yann Leretaille <yleretai...@googlemail.com
> > wrote:
>
>> I understand your point. Actually, benchmarking seems particualry
>> difficult for this one.
>> I created a mooshell wich creates a list with 1000 Elements, wich have 0-3
>> classes, with or without base_class.
>> The list ist cloned for each benchmark and i ran each methos is runned 10
>> times.
>> Here are the results:
>>
>>
>>    - Method1 (my method):
>>       - return this.set('class',new RegExp(klass).exec(this.get('class'))
>>       );
>>
>>
>>    - Method1a (my method, *precompiled RegExp* )
>>       - regexp=new RegExp(klass)
>>       - this.each(function(e) {
>>       e.set('class',regexp.exec(e.get('class'))) });
>>
>>
>>    - Method2 (Roman):
>>       - return this.set('class', this.get('class').split(' ').filter(
>>       function(c){return c == this },klass)[0]);
>>    - Method3 (hazlema):
>>    -  return this.hasClass(klass) ? this.set("class", klass) : this.erase
>>       ("class");
>>
>>
>> Results (1000 items):
>>
>>    - time1:   0.0000340
>>    - *time1a: 0.0000216*
>>    - time2:   0.0000306
>>    - time3:   0.0000234
>>
>> It seems to depend on how much items you have what the fastet method is.
>> The strange thing is that i tried it with 1,50,10,100,500,1000 items and now
>> Method1a is always faster! Perhaps Firefox is caching the RegExp...
>>
>> http://mootools.net/shell/J7ySB/
>>
>> Yann
>>
>>
>>
>> On Mon, Feb 22, 2010 at 06:47, Sanford Whiteman <
>> sa...@cypressintegrated.com> wrote:
>>
>>> >    - Method1: 0.000265s
>>> >    - Method2: 0.000297s
>>> >    - Method3: 0.000279s
>>>
>>> > Looks like if my method is slightly faster...
>>>
>>> Mmm, something is wrong with your benchmark.
>>>
>>> Comparing your regex
>>>
>>> [f1] t.set('class',new RegExp('base_class').exec(t.get('class')));
>>>
>>> with the straightforward
>>>
>>> [f2]    t.hasClass('base_class')   ?   t.set('class','base_class')   :
>>> t.erase('class');
>>>
>>> averaging over 10 runs of 1000 function calls each, the regex approach
>>> is markedly slower.
>>>
>>> [f1]:
>>>
>>>  .016 when base_class is present on the element
>>>  .012 when base_class is not present
>>>
>>> [f2]:
>>>
>>>  .007 when base_class is present
>>>  .004 when base_class is not present
>>>
>>> You can eke out more performance by compiling the RegEx, but the basic
>>> approach still beats it out significantly, 50-100% faster depending on
>>> whether the target class is present.
>>>
>>> [f1-compiled]:
>>>
>>>  .011 when base_class is present on the element
>>>  .008 when base_class is not present
>>>
>>> See http://mootools.net/shell/B8pPc/7/.
>>>
>>> - S.
>>>
>>>
>>
>

Reply via email to