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]

Reply via email to