es6 Map and Set complexity, v8 implementation
For people don't want to dig into the rabbit hole too deep:
1: We can assume good hash table implementations have practically O(1) time complexity.
2: Here is a blog posted by V8 team explains how some memory optimization was done on its hashtable implementation for Map
, Set
, WeakSet
, and WeakMap
: Optimizing hash tables: hiding the hash code
Based on 1 and 2: V8's Set and Map's get
& set
& add
& has
time complexity practically is O(1).
Is it a fair assumption that in v8 implementation retrieval / lookup is O(1)?
Yes. V8 uses a variant of hash tables that generally have O(1)
complexity for these operations.
For details, you might want to have a look at https://codereview.chromium.org/220293002/ where OrderedHashTable
is implemented based on https://wiki.mozilla.org/User:Jorend/Deterministic_hash_tables.