我在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');
Chrome 13结果
简单推送:59ms
设定长度和推动:192ms
新阵列推送:187ms
Firefox 4结果
简单推送:76ms
设定长度和推动:44ms
新阵列推送:40ms
我怀疑
所以新阵列操作肯定是最慢的,但我想知道为什么?
为什么设置长度在Chrome和Firefox中表现不同,看来预分配的内存在Chrome中效果不佳?
更新
我更新了Chrome和FF结果.
解决方法
为什么新阵列(N)最慢?
console.log(arr0.length); console.log(arr1.length); console.log(arr2.length); 1000000 1000000 2000000