キー付きコレクション(Set、Map、WeakSet、およびWeakMap)のES6仕様によって(big-O表記で)どのくらいの時間計算量が提供されますか?
私の期待、およびIは、ほとんどの開発者の仕様や実装が使用することであることを期待する、広く受け入れられている場合にパフォーマンスアルゴリズムSet.prototype.has
、add
及びdelete
平均場合の全てであるO(1)にします。Map
およびWeak–
同等のものについても同じです。
実装の時間計算量が義務付けられているかどうかは、私には完全には明らかではありません。たとえば、ECMAScript 2015言語仕様-第6版-23.2オブジェクトの設定などです。
私がそれを誤解しない限り(そして私がそうすることは確かに非常に可能です)、ECMA仕様は実装(例えばSet.prototype.has
)が線形時間(O(n))アルゴリズムを使用することを義務付けているように見えます。より高性能なアルゴリズムが仕様で義務付けられておらず、許可さえされていないことは非常に驚くべきことであり、なぜそうなるのかについての説明に非常に興味があります。