web-dev-qa-db-ja.com

es6マップおよびセットの複雑さ、v8実装

V8実装では、検索/ルックアップがO(1)であるというのは公正な仮定ですか?

(標準はそれを保証しないことを知っています)

35
Uri

V8実装では、検索/ルックアップがO(1)であるというのは公正な仮定ですか?

はい。 V8は、これらの操作のために一般にO(1)複雑さを持つハッシュテーブルのバリアントを使用します。

詳細については、 https://codereview.chromium.org/220293002/ をご覧ください。OrderedHashTablehttps:// wiki .mozilla.org/User:Jorend/Deterministic_hash_tables

35
Bergi

ウサギの穴を深く掘り下げたくない人には:

1:適切なハッシュテーブルの実装は、実質的にO(1)時間の複雑さを持っていると仮定できます。
2:V8チームが投稿したブログは、MapSetWeakSet、およびWeakMaphashtable実装でメモリ最適化がどのように行われたかを説明しています。 ハッシュテーブルの最適化:ハッシュコードの非表示

1と2に基づく:V8のセットとマップのgetsetaddhas時間の複雑さは、実際にはO(1)です。

4
David Guan