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 :
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 :
entrées : [[-9092791511155847987, 'timmy', 'red'],
[-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
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 :
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!