使用属性获取对象值的运行时间

时间:2014-12-22 05:44:12

标签: javascript performance javascript-objects

当我们从带有索引的数组中获取值时,我们可以在constant时间内完成。

例如:

var array = [3,4,56, ......];
var val = array[3]; //running time is constant

我们假设我们从具有属性

的对象中获取值

例如:

var obj = {prop1 : 3, prop2 : 4, prop3 : 56, ......};
var val = obj.prop3; //running time?

运行时间是多少?它是linear还是constant

提前谢谢你......

2 个答案:

答案 0 :(得分:1)

我们也可以使用

val= obj["prop3"];

也许它像php中的关联数组一样被索引。所以运行时间会不变。

编辑:我还发现此链接http://www.quirksmode.org/js/associative.html将对象作为关联数组进行讨论,以便对它们进行哈希处理。 也许我们可以说字符串(对象属性的名称)有一个长度,因此散列将是O(n)线性但是在散列之后,当他有索引时它将是的 O(1)

我们必须多考虑一下。

答案 1 :(得分:1)

这取决于使用的Javascript引擎。大多数JS引擎将属性功能实现为Dictionary,以支持按需创建属性。因此,对于大多数情况,它是线性的。但是,有更多优化的解决方案,您可以检查以下内容:

https://developers.google.com/v8/design?csw=1#prop_access