gpt4 book ai didi

JavaScript 对象作为哈希?复杂度是否大于 O(1)?

转载 作者:IT王子 更新时间:2023-10-29 03:00:23 24 4
gpt4 key购买 nike

对于我最近写的一些算法,我认为散列会很好。我想我可能只使用对象中的成员变量作为键值对。我不确定这是否是最优的,因为我真的不知道幕后发生了什么。我还假设 V8 的处理方式与其他环境不同。不过,我确实认为查找成员变量会非常快(希望如此)?

综上所述,我想知道在 JavaScript 对象中写入、读取、创建和删除成员变量的运行时复杂度是否都是 O(1)。如果环境存在差异(v8 与其他),它们是什么?

最佳答案

是的,它们是哈希值。跨浏览器的实现是不同的。尽管有许多文章声称对象不是散列,但它们的行为非常像散列,因此可以这样使用。

我必须通过运行性能测试来证明这一点:

阅读这些测试的方法是,如果对象大小增长时 ops/sec 没有性能差异,那么这意味着对象是哈希值。哈希的定义特征是每个操作的复杂度都是 O(1),无论它与其他操作相比是快还是慢。

测试:
http://jsperf.com/objectsashashes/2 (100 个按键)
http://jsperf.com/objectsashashes/3 (10 万个 key )
http://jsperf.com/objectsashashes/ (100 万个 key )
http://jsperf.com/objects-as-hashes-300-mil (10m 键)

注意:每个浏览器在不同的操作中会更快/更慢。这似乎在版本之间和年复一年之间发生变化。

关于JavaScript 对象作为哈希?复杂度是否大于 O(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12241676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com