大数字对比较小的对象数组

时间:2016-09-28 21:17:55

标签: javascript arrays performance object

迭代所有元素会更快吗?

方法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以及所有这些,所以也许对象处理和较小的数组最终会更快?

2 个答案:

答案 0 :(得分:3)

两者都是O(n)。别的都无所谓。即使他们的记忆消耗也只会微不足道。当您认为这是性能关键时,您可以自己做一个基准测试,但是it most likely isn't

使用对象,因为它们为您的数据提供了清晰的结构,并使您的代码更具可读性。是的,你应该考虑将这样的对象传递给doSomething

答案 1 :(得分:0)

运行两个方法https://www.measurethat.net/表示方法1的速度提高了〜2,300次/秒。

https://www.measurethat.net/Benchmarks/ShowResult/1363