1
鏈接速度較慢,如果你喜歡它的格式,以jsperf:https://jsperf.com/test-array-vs-loop-vs-loop-optimized的Javascript:爲什麼我的優化環比比較幼稚一個
我試圖舊jsperf環路VS過濾器,我試圖通過預先分配的優化循環數組,如果大小正確,並避免項目長度重新計算。問題是,它並沒有對我的Chrome 60
這裏的運行速度是代碼:
var items = [];
var names = ['george', 'nick', 'jack', 'herodotus', 'joanne'];
for (var i = 0; i < 2000; i++) {
var obj = {
name: names[i % 5] + '-' + i,
age: i % 10 + 15
};
items.push(obj);
}
function filter_callback(item) {
return (item.age == '18');
}
function test_filter() {
var aged_18_filter = items.filter(filter_callback);
}
function test_loop() {
var aged_18_loop = [];
for (var i = 0; i < items.length; i++) {
if (items[i].age == '18') aged_18_loop.push(items[i]);
}
}
function test_loop_optimized() {
var length=items.length
var aged_18_loop = new Array(length);
for (var i = 0; i < length; i++) {
if (items[i].age == '18') aged_18_loop[i]=items[i];
}
}
編輯:結果是大約39281 OPS /秒的正常循環,37389個OPS /秒「優化「循環。在i7 3610QM上。
我不明白你的優化是什麼。 – ninesalt
提示:如果您嘗試過濾,'new Array(length)'有*錯誤*大小,並且通過分配給'aged_18_loop [i]'而不是數組末尾,您甚至會創建一個稀疏數組孔。我不認爲這就是你想要的。 – Bergi
你得到了什麼結果,你可以發佈它們嗎?我手邊沒有任何Chrome 60。 – Bergi