Warum ist Python-Code in Funktionen schneller?

Susan Sarandon
Freigeben: 2024-11-12 22:01:01
Original
618 Leute haben es durchsucht

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()
Nach dem Login kopieren

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
Nach dem Login kopieren

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'))
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage