V8実装では、検索/ルックアップがO(1)であるというのは公正な仮定ですか?
(標準はそれを保証しないことを知っています)
V8実装では、検索/ルックアップがO(1)であるというのは公正な仮定ですか?
はい。 V8は、これらの操作のために一般にO(1)
複雑さを持つハッシュテーブルのバリアントを使用します。
詳細については、 https://codereview.chromium.org/220293002/ をご覧ください。OrderedHashTable
は https:// wiki .mozilla.org/User:Jorend/Deterministic_hash_tables 。
ウサギの穴を深く掘り下げたくない人には:
1:適切なハッシュテーブルの実装は、実質的にO(1)時間の複雑さを持っていると仮定できます。
2:V8チームが投稿したブログは、Map
、Set
、WeakSet
、およびWeakMap
のhashtable実装でメモリ最適化がどのように行われたかを説明しています。 ハッシュテーブルの最適化:ハッシュコードの非表示
1と2に基づく:V8のセットとマップのget
&set
&add
&has
時間の複雑さは、実際にはO(1)です。