Тествах този код в Chrome / Firefox:
console.time('simple push');
var arr0 = [];
for(var i =0; i < 1000000; i++){
arr0.push(i);
}
console.timeEnd('simple push');
console.time('set length and push');
var arr1 = [];
arr1.length=1000000;
for(var j =0; j < 1000000; j++){
arr1[j]=j;
}
console.timeEnd('set length and push');
console.time('new Array push');
var arr2 = new Array(1000000);
for(var k =0; k < 1000000; k++){
arr2[k]=k;
}
console.timeEnd('new Array push');
просто натискане: 59ms
задайте дължина и натиснете: 192ms
нов Array push: 187ms
просто натискане: 76ms
задайте дължина и натиснете: 44ms
new Array push: 40ms
Така че операцията с нов Array
определено е най-бавната, но искам да знам защо?
Защо зададената дължина се държи различно в Chrome и Firefox, изглежда, че предварително разпределената памет не работи добре в Chrome?
Актуализирах резултатите от Chrome и FF.