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. >>> >>> >> >