I think it's very important to find a better optimizing way for Array in
different situation,
your application Performance could be consist of Array over 30% .  (Array
used anywhere!)

(For example , if you are using jQuery , it means you are facing a lot of
Dom Arrays)

And we usually use Array to contains string pieces to join,  (same reason ,
it's faster then string computation.)
so I think 10k array is just a generic case for me , too.

And it's interesting to find the difference for each browser implementation
*IN DETAIL* ,
which related to the multiple browser support.

I don't that arguments in apply has limitation , and now I know,
it learn me a lession about that.

2011/3/20 Diego Perini <[email protected]>

> On Sun, Mar 20, 2011 at 7:29 AM, אריה גלזר <[email protected]> wrote:
> > IMO this is a very good example of over optimizing. Choose the one that's
> > most readable and shorter to write (= push() ).
> > Array performance is simply not something you should care about in 99% of
> JS
> > apps. Unless you actually find yourself pushing 10K items into an array
> (in
> > which case it's almost certain that you can use caching), thinking of
> > whether or not to use push is simply a waste of your time.
> > Don't do premature optimization or you'll be wasting your time on the
> wring
> > stuff.
> >
> > AFAIK arrays are extremely well optimized on all modern browsers, and as
> for
> > IE, well, it'll be slow no matter what you do, but optimizing array item
> > addition will not make it faster
> >
>
> Just to make sure I am not misunderstood.
>
> Array are also used to do image manipulations with canvas.
>
> 10K items is really a very tiny picture (very small array), I am
> talking about 200K / 500K items in my case :)
>
> That's one reason why "apply()" cannot handle that on every browser,
> and yes n[n.length] is faster than ".push()" since the cost of the
> call is avoided and replaced by a simpler lookup.
>
> Don't worry @arieh, I am not loosing my time and I am actually doing
> just fine thanks.
>
> You should better ignore messages that do not interest you ! Or just
> ask details if you don't understand ;-)
>
> --
> Diego
>
>
> > On Thu, Mar 17, 2011 at 12:36 AM, Diego Perini <[email protected]>
> > wrote:
> >>
> >> 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]
> >
> >
> >
> > --
> > Arieh Glazer
> > אריה גלזר
> > 052-5348-561
> > http://www.arieh.co.il
> > http://www.link-wd.co.il
> >
> > --
> > 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]
>

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