>From this perf https://jsperf.com/preallocating-array/27, using 
 pre-allocated Array(size) seems the fastest.

On Saturday, February 20, 2016 at 8:57:20 AM UTC-5, Dean McNamee wrote:
>
> https://youtu.be/UJPdhx5zTaw?t=17m43s 
>
> Not sure if that advice still stands as it's a few years old, but my 
> experience has been, in the general case, it is unfortunately faster 
> to allocate an empty array and use push() than to preallocate an array 
> of the desired size and populate it.  I have notes above a utility 
> function I wrote that said I measured a 2x improvement in using push 
> over Array(size), but I can't tell you now for what sort of size 
> values that was. 
>
> As always, just try it and measure.  I've also found using some of the 
> native methods helps in the process to understand why the performance 
> difference is there. 
>
> You can probably use something like the native %HasFastProperties() to 
> check (this means running with --allow_natives_syntax). 
>
> There is also %_HasFastPackedElements() in Hydrogen, but I didn't look 
> to see what the difference is. 
>
> On Sat, Feb 20, 2016 at 1:05 PM, Michael Zhou 
> <[email protected] <javascript:>> wrote: 
> > If I have 
> > 
> > var arr = new Array(50); // Should be dense, I guess? 
> > arr[20] = 0; 
> > arr[40] = 1; 
> > arr[20] = undefined; 
> > var keys = Object.keys(arr); 
> > 
> > Will this access pattern make v8 think arr is a sparse array and change 
> to 
> > using a hash table? 
> > 
> > Also, is copying from old back store to new back store unavoidable when 
> I 
> > grow the array by doing 
> > for (var i = 50; i < 100; i++) { 
> >   arr[i] = 0; 
> > } 
> > 
> > ? Thanks. 
> > 
> > -- 
> > -- 
> > v8-users mailing list 
> > [email protected] <javascript:> 
> > http://groups.google.com/group/v8-users 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "v8-users" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to