Sah*_*wal 51 javascript hash dictionary
我刚刚读到这个问题:是否有像python这样的javascript中的字典?
其中一个答案表示您可以使用Python字典之类的JavaScript对象.真的吗?对象中键查找的性能如何?是O(1)?是否为对象添加一个键也是恒定时间(散列)?
Dom*_*nic 56
该V8设计文档暗示查询将至少这快,如果不是更快:
大多数JavaScript引擎使用类似字典的数据结构作为对象属性的存储 - 每个属性访问都需要动态查找来解析属性在内存中的位置.这种方法使得访问JavaScript的属性通常比访问Java和Smalltalk等编程语言中的实例变量要慢得多.在这些语言中,由于对象类定义的固定对象布局,实例变量位于由编译器确定的固定偏移处.访问只是内存加载或存储的问题,通常只需要一条指令.
为了减少访问JavaScript属性所需的时间,V8不使用动态查找来访问属性.相反,V8在幕后动态创建隐藏类.[...] 在V8中,当添加新属性时,对象会更改其隐藏类.
听起来,由于隐藏的类创建,添加新密钥可能会稍慢一些.
Pet*_*ter 19
是的,您可以假设添加密钥,以及稍后将其用于访问是有效的恒定时间操作.
在引擎盖下,JS引擎可以应用一些技术来优化后续查找,但是出于任何算法的目的,您可以假设O(1).