Heim >Backend-Entwicklung >Python-Tutorial >Warum ist Python-Code in Funktionen schneller?

Warum ist Python-Code in Funktionen schneller?

Susan Sarandon
Susan SarandonOriginal
2024-11-12 22:01:01659Durchsuche

Why is Python Code Faster Inside Functions?

Schnellerer Python-Code in Funktionen: Enthüllung der optimierten Ausführung

Bei der Ausführung von Python-Code führt das Einschließen von Vorgängen in Funktionen häufig zu erheblichen Leistungssteigerungen. Dieser deutliche Unterschied macht neugierig:为何 Python 代码在函数中执行更快?

Untersuchung der Geschwindigkeitsunterschiede

Bedenken Sie den folgenden Code Schnipsel:

def main():
    for i in xrange(10**8):
        pass
main()

Das Ausführen dieses Codes führt zu einer Zeit von etwa 1,8 Sekunden. Wenn die for-Schleife jedoch außerhalb einer Funktion ausgeführt wird:

for i in xrange(10**8):
    pass

Die Ausführung dauert viel länger (4,5 Sekunden).

Bytecode-Analyse: Den zugrunde liegenden Grund aufdecken

Um diese Leistungsdiskrepanz zu verstehen, untersuchen wir den von Python generierten Bytecode. Innerhalb einer Funktion zeigt der Bytecode eine Folge von Operationen an, die eine Schleife aufbauen, den Bereich berechnen und diese durchlaufen. Diese Struktur ist auf Geschwindigkeit optimiert.

Auf der obersten Ebene unterscheidet sich der Bytecode geringfügig. Die Variable i wird als global deklariert, was zu einem langsameren Speichervorgang (STORE_NAME) als dem in der Funktion verwendeten lokalen Speichervorgang (STORE_FAST) führt.

Um Bytecode zu untersuchen, bietet das Modul dis wertvolle Hilfe. Die folgenden Befehle zerlegen die Funktion bzw. den Code der obersten Ebene:

import dis
dis.dis(main)
dis.dis(compile('for i in xrange(10**8): pass', '', 'exec'))

Fazit

Der Leistungsvorteil der Ausführung von Code innerhalb von Funktionen in Python ergibt sich aus Optimierungen in Bytecode-Ausführung. Die Verwendung lokaler Variablen, dargestellt durch die Anweisung STORE_FAST, verbessert die Ausführungsgeschwindigkeit erheblich im Vergleich zur Verwendung globaler Variablen, die die langsamere Anweisung STORE_NAME beinhalten.

Das obige ist der detaillierte Inhalt vonWarum ist Python-Code in Funktionen schneller?. 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