Maison > développement back-end > Tutoriel Python > Comment l'implémentation du dictionnaire Python 3.6 améliore-t-elle l'utilisation de la mémoire et préserve-t-elle l'ordre d'insertion ?

Comment l'implémentation du dictionnaire Python 3.6 améliore-t-elle l'utilisation de la mémoire et préserve-t-elle l'ordre d'insertion ?

Mary-Kate Olsen
Libérer: 2025-01-02 18:04:39
original
677 Les gens l'ont consulté

How Does Python 3.6  Dictionary Implementation Improve Memory Usage and Preserve Insertion Order?

Python 3.6 : Les dictionnaires préservent l'ordre d'insertion

Depuis Python 3.6, les dictionnaires dans les implémentations CPython présentent un ordre d'insertion, un écart significatif par rapport aux versions précédentes . Cette fonctionnalité est désormais une fonctionnalité de langage garantie dans Python 3.7.

Utilisation et performances de la mémoire améliorées

La nouvelle implémentation du dictionnaire réduit considérablement l'utilisation de la mémoire de 20 à 25 % par rapport à Python3.5. Cette amélioration provient de l'utilisation par l'implémentation de tableaux séparés :

  • dk_entries : Stocke les entrées (PyDictKeyEntry) dans l'ordre d'insertion.
  • dk_indices : Stocke les index des entrées dans dk_entries, agissant comme un hachage table.

Auparavant, un tableau clairsemé de type PyDictKeyEntry devait être alloué, ce qui entraînait une perte d'espace en raison de considérations de performances. La nouvelle approche alloue uniquement les entrées nécessaires et utilise un tableau clairsemé de type intX_t, qui consomme moins de mémoire.

Structures de données utilisées

À l'origine, les dictionnaires étaient stockés sous la forme [ keyhash, key, value] dans un tableau clairsemé avec des entrées vides désignées par '--'. La nouvelle approche organise les données comme :

  • indices : [Aucun, 1, Aucun, Aucun, Aucun, 0, Aucun, 2]
  • entrées : [[-9092791511155847987, 'timmy', 'red'],

            [-8522787127447073495, 'barry', 'green'],
            [-6480567542315338377, 'guido', 'blue']]
    
    Copier après la connexion

Cette structure révisée réduit considérablement la surcharge de mémoire.

Avantages de l'ordre d'insertion

Alors que la nouvelle implémentation du dictionnaire se concentre principalement sur l'optimisation de la mémoire, la fonctionnalité d'ordre d'insertion est pratique applications :

  • Préserver l'ordre des objets dans lesquels ils ont été ajoutés au dictionnaire.
  • Personnalisation de l'ordre d'affichage ou d'itération du contenu du dictionnaire.

Il est important de noter que l’ordre d’insertion n’est pas garanti dans les différentes implémentations de Python ou dans les futures versions du langage. Cependant, dans Python 3.7 et versions ultérieures, il s'agit d'une fonctionnalité garantie sur laquelle vous pouvez compter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal