Javascript ES6 集合的计算/时间复杂性
2022-08-30 05:08:23
ES6 规范为键控集合(Set、Map、WeakSet 和 WeakMap)提供了什么时间复杂度(在 big-O 表示法中)?
我的期望,我期望大多数开发人员的期望是,规范和实现将使用广泛接受的高性能算法,在这种情况下,在一般情况下都是O(1)。和 等效项也是如此。Set.prototype.has
add
delete
Map
Weak–
对于我来说,实现的时间复杂度是否被强制要求并不完全清楚,例如在 ECMAScript 2015 语言规范 - 第 6 版 — 23.2 Set Objects 中。
除非我误解了它(我当然很有可能误解),否则看起来ECMA规范要求实现(例如Set.prototype.has
)使用线性时间(O(n))算法。令我非常惊讶的是,规范不会强制要求甚至不允许更高性能的算法,而且我对解释为什么会这样非常感兴趣。