Alternativ: Wie viel schlechter sind die anderen im Vergleich zu lokalen Variablen?
Was ist die große Sache?
Einige Artikel empfehlen Python-Programmierern, lokale Variablen zu verwenden, wenn diese häufig verwendet werden, auch wenn sie nur referenziert, aber nicht geändert werden.
Hier sind zum Beispiel zwei Zitate aus „Making Python Programs Blazing Fast“:
„Es gibt tatsächlich einen Unterschied in der Suchgeschwindigkeit, sogar zwischen – sagen wir mal – lokalen Variablen in der Funktion (am schnellsten), Attributen auf Klassenebene (z. B. self.name – langsamer) und globalen, beispielsweise importierten Funktionen wie time.time (am langsamsten). ."
"Nicht auf Attribute zugreifen
Eine weitere Sache, die Ihre Programme verlangsamen könnte, ist der Punktoperator (.), der beim Zugriff auf Objektattribute verwendet wird. Dieser Operator löst die Wörterbuchsuche mit getattribute aus, was zu zusätzlichem Overhead in Ihrem Code führt. „
Außerdem sind dies nicht die einzigen Möglichkeiten. Was ist mit den Unterschieden zwischen:
Ich habe getestet, indem ich all dies in Schleifen mit 1.000.000 Iterationen verwendet habe, aber nur minimale Arbeit pro Iteration darin. Die Funktionen waren alle Methoden einer Klasse, mit Ausnahme der Funktion, die zum Testen von Funktionsattributen für Funktionen außerhalb einer Klasse verwendet wurde.
Eine typische Funktion hatte die Form:
def testINSA(self): s=0 for i in range(10000000): s+=self.INSA # what is after the = differs in each function. return s
Der gesamte Code befindet sich am Ende dieses Beitrags.
| | | | Relative | | Where | Time | Rate | Performance | | LV Local Variable | 1.92 | 0.5208 | 100% | | GV Global Variable | 1.99 | 0.5020 | 96% | | ISA Instance Slotted Attribute | 2.09 | 0.4789 | 92% | | CA Class Attribute | 3.12 | 0.3204 | 62% | | INSA Instance Non-Slotted Attribute | 3.28 | 0.3051 | 59% | | FA Function Attribute | 3.49 | 0.2865 | 55% | | MA Method Attribute | 6.29 | 0.1589 | 31% |
Erklärung:
Wenn Sie die Leistung vergleichen, vergleichen Sie immer (Erfolge/Ressource), wie etwa Meilen pro Gallone oder Berechnungen pro Sekunde, und nicht Liter pro Kilometer oder Sekunden pro Berechnung.
Ja, die lokalen Variablen sind am schnellsten.
Die Leistung der verschiedenen Arten von Variablen, gruppiert in drei Gruppierungen.
Die Überraschung ist, dass Globale im Vergleich zur allgemeinen Meinung die zweitbesten sind, sogar besser als geslotte Instanzattribute in einer Klasse. Eine weitere Überraschung ist, dass Methodenattribute am schlechtesten sind.
def testINSA(self): s=0 for i in range(10000000): s+=self.INSA # what is after the = differs in each function. return s
Das obige ist der detaillierte Inhalt vonWie viel besser sind lokale Python-Variablen gegenüber globalen Variablen, Attributen oder Slots?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!