3 Stimmen

Overhead/Leistung von Python-Datenstrukturen

Gibt es einen Leistungsvorteil bei der Verwendung von Listen über Dictionaries über Tuples in Python?

Wenn ich auf Geschwindigkeit optimiere, gibt es dann einen Grund, das eine dem anderen vorzuziehen?

20voto

Eli Bendersky Punkte 246100

Reich,

Listen und Dicts sind für unterschiedliche Bedürfnisse geeignet. Stellen Sie sicher, dass Sie nicht Listen für lineare Suchen verwenden, wo Dicts Hashes perfekt sind, weil es viel langsamer ist. Auch, wenn Sie nur eine Liste von Elementen zu durchlaufen brauchen, verwenden Sie nicht Dicts, weil es viel mehr Platz als Listen nehmen wird.

Das mag offensichtlich klingen, aber die Auswahl der richtigen Datenstrukturen auf algorithmischem Wege bringt viel höhere Leistungsgewinne als die Mikrooptimierung aufgrund effizienterer kompilierter Codelayouts usw. Wenn Sie in einer Liste in O(n) statt in einem Diktat in O(1) suchen, werden Sie durch Mikrooptimierungen nicht gerettet.

6voto

Eli Courtwright Punkte 174547

Tupel sind bei einer geringen Anzahl von Elementen etwas schneller zu erstellen. Der größte Teil des Gewinns liegt jedoch im Speicherverbrauch und nicht in den CPU-Zyklen, da Tupel weniger Platz benötigen als Listen.

Davon abgesehen sollte der Leistungsunterschied vernachlässigbar sein, und im Allgemeinen sollten Sie sich erst dann um diese Art von Mikrooptimierungen kümmern, wenn Sie Ihren Code profiliert und einen Codeabschnitt identifiziert haben, der einen Engpass darstellt.

2voto

kgiannakakis Punkte 100768

Der große Unterschied besteht darin, dass Tupel unveränderbar sind, während Listen und Wörterbücher veränderbare Datenstrukturen sind. Das bedeutet, dass Tupel auch schneller sind. Wenn Sie also eine Sammlung von Elementen haben, die sich nicht ändert, sollten Sie sie Listen vorziehen.

0voto

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X