Python-Code-Leistungsoptimierung mit Funktionen
Es wurde beobachtet, dass die Ausführung von spezifischem Code innerhalb von Funktionen in Python die Ausführungsgeschwindigkeit erheblich steigert. Lassen Sie uns die Gründe für dieses merkwürdige Verhalten untersuchen.
Anfangs wurde eine for-Schleife in eine Funktion gekapselt:
def main(): for i in xrange(10**8): pass main()
Dieser Code weist eine lobenswerte Leistung auf und wird in weniger als 2 Sekunden abgeschlossen. Wenn die for-Schleife jedoch unabhängig ausgeführt wurde, ohne in eine Funktion eingeschlossen zu sein:
for i in xrange(10**8): pass
seine Ausführungszeit stieg auf über 4 Sekunden. Um das Geheimnis hinter dieser Ungleichheit zu lüften, müssen wir uns mit dem vom Python-Interpreter generierten Bytecode befassen.
Bei der Untersuchung des Bytecodes der Funktion stellen wir fest, dass die Variable i mithilfe des STORE_FAST-Opcodes zugewiesen wird.
LOAD_FAST 0 (i)
Wenn die for-Schleife auf der obersten Ebene ausgeführt wird, wird die Variable i mithilfe des STORE_NAME zugewiesen Opcode.
STORE_NAME 1 (i)
Entscheidend ist, dass STORE_FAST eine effizientere Operation als STORE_NAME ist. Diese Effizienz ergibt sich aus der Tatsache, dass i, wenn es sich um eine lokale Variable innerhalb einer Funktion handelt (mithilfe von STORE_FAST), im Stapelrahmen gespeichert wird. Wenn i dagegen eine globale Variable ist (unter Verwendung von STORE_NAME), muss sie im Wörterbuch der globalen Variablen gespeichert werden.
Um den Bytecode weiter zu untersuchen, können Sie das Modul dis verwenden. Zur direkten Zerlegung einer Funktion kann das Modul dis eingesetzt werden. Für die Zerlegung des auf der obersten Ebene ausgeführten Codes muss jedoch die integrierte Kompilierungsfunktion genutzt werden.
Durch das Verständnis der zugrunde liegenden Bytecode-Operationen können wir die Leistungsfähigkeit der Funktionen in Python nutzen, um die Codeausführungsgeschwindigkeit effektiv zu optimieren.
Das obige ist der detaillierte Inhalt vonWarum steigert die Kapselung von Code in Funktionen die Python-Leistung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!