迭代所有元素会更快吗?
方法1:
let array = [10, 0, 0, 20, 1, 0, 12, 2, 0];
for(let i = 0, l = array.length; i < l; i += 3) {
doSomething(array[i], array[i + 1], array[i + 2]);
}
VS
方法2:
let array = [{id:10, x:0, y:0}, {id:20, x:1, y:0}, {id:12, x:2, y:0}];
for(let i = 0, l = array.length, current = null; i < l; ++i) {
current = array[i];
doSomething(current.id, current.x, current.y);
// i'm aware that we could make doSomething work with the object
// -> even a thing to consider?
}
我的猜测是我们用 1 来加快速度,但是你们可能有更多的v8,spidermonkey以及所有这些,所以也许对象处理和较小的数组最终会更快?
答案 0 :(得分:3)
两者都是O(n)
。别的都无所谓。即使他们的记忆消耗也只会微不足道。当您认为这是性能关键时,您可以自己做一个基准测试,但是it most likely isn't。
使用对象,因为它们为您的数据提供了清晰的结构,并使您的代码更具可读性。是的,你应该考虑将这样的对象传递给doSomething
。
答案 1 :(得分:0)
运行两个方法https://www.measurethat.net/表示方法1的速度提高了〜2,300次/秒。