小编典典

JavaScript对象中键查找的性能

javascript

您可以使用Python字典等JavaScript对象。真的吗?对象中键查找的性能如何?是O(1)吗?向对象添加键也是恒定时间(散列)吗?


阅读 327

收藏
2020-05-01

共1个答案

小编典典

该V8设计文档暗示查询将至少这快,如果不是更快:

大多数JavaScript引擎使用类似字典的数据结构作为对象属性的存储
-每个属性访问都需要动态查找以解析属性在内存中的位置。这种方法通常使访问JavaScript中的属性比访问诸如Java和Smalltalk这样的编程语言中的实例变量慢得多。在这些语言中,由于对象类定义的固定对象布局,实例变量位于由编译器确定的固定偏移处。访问只是内存加载或存储的问题,通常只需要一条指令即可。

为了减少访问JavaScript属性所需的时间,V8不使用动态查找来访问属性。相反,V8在后台动态创建隐藏的类。[…]
在V8中,添加新属性后,对象会更改其隐藏类。

听起来,由于隐藏类的创建,添加新键可能会稍微慢一些。

2020-05-01