On Wed, Mar 16, 2011 at 8:39 PM, Tony Wang <[email protected]> wrote: > Oops , I find this script is too heavy for my ie8 but it's fine for firefox. > (that's just like what we know .... ) > > Don't click it if you are using IE. haha > > This is a smaller amount version. > http://jsfiddle.net/We9p9/3/ > > And the speed still very depends on your browser implemention between > n[n.length] and n.push(). > > > 2011/3/16 Tony Wang <[email protected]> >> >> btw ,there's a interesting topic ,too. >> >> if you are doing array concat job, you could take a look for this. >> http://jsfiddle.net/We9p9/1/ >> >> The keypoint is , even when you are using array.push , >> >> ary.push(1,2,3,4,5); >> is still faster then >> ary.push(1); >> ary.push(2); >> ary.push(3); >> ary.push(4); >> ary.push(5); >> >> >> >> 2011/3/16 Diego Perini <[email protected]>: >> > On Wed, Mar 16, 2011 at 12:14 PM, Rob Griffiths <[email protected]> >> > wrote: >> >> >> >>> Length should return the value of the last index + 1, so in that case >> >>> length will return 8 >> >> >> >> I knew I should have checked before stating that. >> >> >> >> -- >> >> Rob Griffiths >> >> http://bytespider.eu >> >> @bytespider >> >> https://github.com/bytespider >> >> >> >> -- >> >> To view archived discussions from the original JSMentors Mailman list: >> >> http://www.mail-archive.com/[email protected]/ >> >> >> >> To search via a non-Google archive, visit here: >> >> http://www.mail-archive.com/[email protected]/ >> >> >> >> To unsubscribe from this group, send email to >> >> [email protected] >> >> >> > >> > I use the following to convert/concat NodeList to Array: >> > >> > // concat elements to data array >> > concatList = >> > function(data, elements) { >> > var i = -1, element; >> > if (data.length === 0 && Array.slice) >> > return Array.slice(elements); >> > while ((element = elements[++i])) >> > data[data.length] = element; >> > return data; >> > }, >> > >> > On older browsers this was the fastest "loop" among many browsers at >> > the time I tested it and on newer browsers this is not used/necessary. >> > >> > I am not sure using Firefox "Array.slice" shortcut when "data" array >> > is empty is worth it (nowadays) so the bare bone JS should be this: >> > >> > // concat elements to data array >> > concatList = >> > function(data, elements) { >> > var i = -1, element; >> > while ((element = elements[++i])) >> > data[data.length] = element; >> > return data; >> > }, >> > >> > At that time another interesting thing I observed was that Webkit >> > based browser were also faster to access DOM element in the ancient >> > way using the "nodelist.item(n)" notation (really much faster). >> > >> > The point is performances are improving at a fast pace in every >> > browser engine so small speed improvements like these are becoming >> > less and less relevant, it is still a funny exercise though :) >> > >> > -- >> > Diego >> > >> > -- >> > To view archived discussions from the original JSMentors Mailman list: >> > http://www.mail-archive.com/[email protected]/ >> > >> > To search via a non-Google archive, visit here: >> > http://www.mail-archive.com/[email protected]/ >> > >> > To unsubscribe from this group, send email to >> > [email protected] >> > >> > > -- > To view archived discussions from the original JSMentors Mailman list: > http://www.mail-archive.com/[email protected]/ > > To search via a non-Google archive, visit here: > http://www.mail-archive.com/[email protected]/ > > To unsubscribe from this group, send email to > [email protected] >
Tony, "apply()" seems a bit faster with big numbers, however the number of arguments you can pass are limited in all browsers. That's one reason I try to avoid it when I know I will maybe hit those limits. You will easily hit those limits with string to array conversions in canvas for example, were I found the problem first time I tried. In other cases I think the current limitations are not a problem :) I tweeted about that before and there are exact numbers in that tweet for Safari/Chrome which are differently limited (even if both are Webkit implementations). Firefox and Opera seems to have a higher limit if I recall correctly almost, twice as much (something around 256K for WK and 512K/1M for FF/OP). -- Diego -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/[email protected]/ To search via a non-Google archive, visit here: http://www.mail-archive.com/[email protected]/ To unsubscribe from this group, send email to [email protected]
