Heim >Backend-Entwicklung >Python-Tutorial >Warum verbessert die Funktionskapselung die Ausführungsgeschwindigkeit von Python-Code?

Warum verbessert die Funktionskapselung die Ausführungsgeschwindigkeit von Python-Code?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 07:29:02949Durchsuche

Why Does Function Encapsulation Enhance Python Code Execution Speed?

Verbesserung der Codeausführungsgeschwindigkeit durch Funktionskapselung

Beim Ausführen von Python-Code fällt auf, dass in einer Funktion enthaltener Code deutlich schneller ausgeführt wird als der Derselbe Code wird außerhalb einer Funktion ausgeführt. Um dieses Phänomen zu untersuchen, analysieren wir einen einfachen Codeausschnitt:

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

Dieser Code wird in etwa 1,8 Sekunden ausgeführt, wenn er innerhalb der Funktion main() ausgeführt wird. Wenn die for-Schleife jedoch außerhalb der Funktion platziert wird, erhöht sich die Ausführungszeit auf etwa 4,5 Sekunden:

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

Der Grund für diese Leistungsunterschiede liegt in der Art und Weise, wie Python Code kompiliert. Wenn der Code innerhalb einer Funktion ausgeführt wird, wird er in eine Form kompiliert, die als Bytecode bezeichnet wird. Bytecode ist eine Folge von Anweisungen, die die Python Virtual Machine (PVM) effizienter ausführt als der ursprüngliche Python-Code.

Eine Untersuchung des Bytecodes für das Code-Snippet mit dem Modul dis zeigt den Unterschied:

Innerhalb einer Funktion:

  2           0 SETUP_LOOP              20 (to 23)
              3 LOAD_GLOBAL              0 (xrange)
              6 LOAD_CONST               3 (100000000)
              9 CALL_FUNCTION            1
             12 GET_ITER            
        >>   13 FOR_ITER                 6 (to 22)
             16 STORE_FAST               0 (i)

  3          19 JUMP_ABSOLUTE           13
        >>   22 POP_BLOCK           
        >>   23 LOAD_CONST               0 (None)
             26 RETURN_VALUE        

Außerhalb einer Funktion:

  1           0 SETUP_LOOP              20 (to 23)
              3 LOAD_NAME                0 (xrange)
              6 LOAD_CONST               3 (100000000)
              9 CALL_FUNCTION            1
             12 GET_ITER            
        >>   13 FOR_ITER                 6 (to 22)
             16 STORE_NAME               1 (i)

  2          19 JUMP_ABSOLUTE           13
        >>   22 POP_BLOCK           
        >>   23 LOAD_CONST               2 (None)
             26 RETURN_VALUE        

Der entscheidende Unterschied liegt in den Anweisungen in den Zeilen 16 und 19. Innerhalb der Funktion wird die Variable i mit STORE_FAST gespeichert, das für lokale Variablen optimiert ist. Außerhalb der Funktion wird i jedoch mit STORE_NAME gespeichert, was rechenintensiver ist, da es sich auf globale Variablen bezieht.

Daher optimieren wir durch die Kapselung des Codes innerhalb einer Funktion die Speicherung und den Abruf von Variablen, was zu einem Ergebnis führt in schnelleren Ausführungszeiten.

Das obige ist der detaillierte Inhalt vonWarum verbessert die Funktionskapselung die Ausführungsgeschwindigkeit von Python-Code?. 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