優化的JavaScript所以我有known一會兒即for循環
for (var i=0, len = myArray.length; i < len; i++){
}
比
for (var i=0; myArray.length; i++){
}
爲大陣列更有效。但是想知道前者真的會給你帶來多大的性能提升?
今天我開始做一些基準測試。我創建了一個數組並將100,000個數字推入其中。
var array = [];
for(var i = 0; i < 100000; i++)
array.push(i);
然後,我通過對數組中的每個數字進行console.log測試,並對該過程進行計時,從而測試了上述兩個循環。
console.time('loop');
for(var i = 0; i < array.length; i++)
console.log(i);
console.timeEnd('loop');
而對於第二個測試
console.time('loop');
for(var i = 0, len = array.length; i < len ;i++)
console.log(i)
console.timeEnd('loop')
測試了幾次後,我的結果是不確定的。這兩個測試用例都可以同時獲得最高和最低的數字。所以我的問題是,有什麼更好的測試來明確地表明,事先獲得長度會帶來性能上的好處,以及獲得什麼樣的百分比收益?
有一個相當全面的jspef完成所有類型的循環,而對於post/pre increment/decrement。但目前我找不到它 – Joe
但我想自己運行它:-) –
您可能會發現[jsperf.com](http://jsperf.com)在這種情況下很有用。在這種情況下,我懷疑對console.log的調用完全支配整個運行時間。 – Pointy