web-dev-qa-db-fra.com

Es6 Map and Set complexité, implémentation v8

Est-ce une supposition juste que dans la récupération/recherche d'implémentation v8 est O (1)?

(Je sais que la norme ne garantit pas cela)

35
Uri

Est-ce une supposition juste que dans la récupération/recherche d'implémentation v8 est O (1)?

Oui. V8 utilise une variante des tables de hachage qui ont généralement une complexité O(1) pour ces opérations.

Pour plus de détails, vous voudrez peut-être consulter https://codereview.chromium.org/220293002/OrderedHashTable est implémenté en fonction de https: // wiki .mozilla.org/Utilisateur: Jorend/Deterministic_hash_tables .

35
Bergi

Pour les gens qui ne veulent pas creuser trop profondément dans le terrier du lapin:

1: Nous pouvons supposer que les bonnes implémentations de table de hachage ont pratiquement O(1) complexité en temps).
2: Voici un blog publié par l'équipe V8 qui explique comment une certaine optimisation de la mémoire a été effectuée sur son implémentation de la table de hachage pour Map, Set, WeakSet et WeakMap: Optimisation des tables de hachage: masquage du code de hachage

Basé sur 1 et 2: la complexité temporelle de l'ensemble et de la carte get & set & add & has est pratiquement O (1).

4
David Guan