В первом примере я создал пустой массив длины 1000:Почему итерацию по массиву с размером быстрее
var arr = new Array(1000);
for (var i = 0; i < arr.length; i++)
arr[i] = i;
Во втором примере создается пустой массив длины 0:
var arr = [];
for (var i = 0; i < 1000; i++)
arr.push(i);
тестирования в Chrome 41.0. 2272.118 на OS X 10.10.3, а первый блок работает быстрее. Зачем? Потому что JavaScript-движок знает размер массива?
Benchmark здесь http://jsperf.com/poerttest/2.
Как ваша теория объясняет http://jsperf.com/poerttest/6? не будет ли случай 3 быстрее, чем случай 2, если перераспределение объясняет различия в производительности? ваша теория имеет смысл, я просто не уверен, что это правда в V8. – dandavis
@dandavis второй и третий пример такие же, потому что размер массива в третьем примере - 2000. – wanillsky
хороший глаз, я нахожусь перед моим сном;) – dandavis