【问题标题】:Running time of fetching object value with property使用属性获取对象值的运行时间
【发布时间】:2015-02-20 05:22:15
【问题描述】:

当我们从带有索引的数组中获取一个值时,我们可以在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

提前谢谢你...

【问题讨论】:

    标签: javascript performance javascript-objects


    【解决方案1】:

    这取决于所使用的 Javascript 引擎。大多数 JS 引擎将属性特性实现为字典,以支持按需创建属性。因此,对于大多数情况,它是线性的。不过,还有更优化的解决方案,您可以查看以下内容:

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

    【讨论】:

      【解决方案2】:

      我们也可以使用

      val= obj["prop3"];
      

      也许它像 php 中的关联数组一样被索引。所以运行时间是恒定的。

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

      我们必须考虑更多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多