Heim >Backend-Entwicklung >Python-Tutorial >Wie verbessert die Implementierung des Python 3.6-Wörterbuchs die Speichernutzung und behält die Einfügereihenfolge bei?

Wie verbessert die Implementierung des Python 3.6-Wörterbuchs die Speichernutzung und behält die Einfügereihenfolge bei?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-02 18:04:39713Durchsuche

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

Python 3.6: Wörterbücher behalten die Einfügungsreihenfolge bei

Ab Python 3.6 weisen Wörterbücher in CPython-Implementierungen eine Einfügungsreihenfolge auf, eine erhebliche Abweichung von früheren Versionen . Diese Funktion ist jetzt eine garantierte Sprachfunktion in Python 3.7.

Verbesserte Speichernutzung und Leistung

Die neue Wörterbuchimplementierung reduziert die Speichernutzung im Vergleich zu deutlich um 20–25 % Python 3.5. Diese Verbesserung ergibt sich aus der Verwendung separater Arrays durch die Implementierung:

  • dk_entries: Speichert Einträge (PyDictKeyEntry) in der Einfügungsreihenfolge.
  • dk_indices: Speichert Indizes für Einträge in dk_entries und fungiert als Hash Tabelle.

Zuvor musste ein spärliches Array vom Typ PyDictKeyEntry zugewiesen werden, was aus Leistungsgründen zu Platzverschwendung führte. Der neue Ansatz weist nur die notwendigen Einträge zu und verwendet ein spärliches Array vom Typ intX_t, das weniger Speicher verbraucht.

Verwendete Datenstrukturen

Ursprünglich wurden Wörterbücher als [ keyhash, key, value] in einem spärlichen Array mit leeren Einträgen, gekennzeichnet durch „--“. Der neue Ansatz organisiert die Daten wie folgt:

  • Indizes: [None, 1, None, None, None, 0, None, 2]
  • Einträge: [[-9092791511155847987, 'timmy', 'red'],

            [-8522787127447073495, 'barry', 'green'],
            [-6480567542315338377, 'guido', 'blue']]
    

Diese überarbeitete Struktur reduziert den Speicheraufwand erheblich.

Vorteile der Einfügungsreihenfolge

Während sich die neue Wörterbuchimplementierung in erster Linie auf die Speicheroptimierung konzentriert, ist die Einfügungsreihenfolgefunktion praktisch Anwendungen:

  • Behalten der Reihenfolge der Objekte, in der sie dem Wörterbuch hinzugefügt wurden.
  • Anpassen der Anzeige- oder Iterationsreihenfolge von Wörterbuchinhalten.

Es ist wichtig zu beachten, dass die Einfügungsreihenfolge für verschiedene Python-Implementierungen oder zukünftige Sprachversionen nicht garantiert ist. In Python 3.7 und höher ist es jedoch eine garantierte Funktion, auf die Sie sich verlassen können.

Das obige ist der detaillierte Inhalt vonWie verbessert die Implementierung des Python 3.6-Wörterbuchs die Speichernutzung und behält die Einfügereihenfolge bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn