Maison >développement back-end >Tutoriel Python >Pourquoi le code Python s'exécute-t-il plus rapidement dans les fonctions ?

Pourquoi le code Python s'exécute-t-il plus rapidement dans les fonctions ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 10:42:031010parcourir

Why Does Python Code Run Faster Inside Functions?

Performances améliorées du code Python dans les fonctions

Cette question étudie pourquoi le code Python s'exécute beaucoup plus rapidement lorsqu'il est placé dans une fonction. Dans le code fourni, une boucle parcourt une large plage et le temps d'exécution varie considérablement selon que la boucle est contenue ou non dans une fonction.

Cause de la différence de performances

La différence de performances provient du bytecode sous-jacent généré pour le code. Au sein d'une fonction, le bytecode utilise l'instruction STORE_FAST pour attribuer une valeur à une variable locale. Ce processus est optimisé et généralement plus rapide que l'utilisation de l'instruction STORE_NAME, qui est utilisée pour attribuer une valeur à une variable globale ou non locale.

Analyse du bytecode

Le bytecode pour la boucle à l'intérieur de la fonction est la suivante :

SETUP_LOOP              20 (to 23)
LOAD_GLOBAL              0 (xrange)
LOAD_CONST               3 (100000000)
CALL_FUNCTION            1
GET_ITER            
FOR_ITER                 6 (to 22)
STORE_FAST               0 (i)
JUMP_ABSOLUTE           13
POP_BLOCK           
LOAD_CONST               0 (None)
RETURN_VALUE        

En revanche, le bytecode de la boucle en dehors de la fonction est :

SETUP_LOOP              20 (to 23)
LOAD_NAME                0 (xrange)
LOAD_CONST               3 (100000000)
CALL_FUNCTION            1
GET_ITER            
FOR_ITER                 6 (to 22)
STORE_NAME               1 (i)
JUMP_ABSOLUTE           13
POP_BLOCK           
LOAD_CONST               2 (None)
RETURN_VALUE        

Conclusion

L'utilisation de STORE_FAST au lieu de STORE_NAME dans le bytecode généré pour la boucle au sein de la fonction contribue à sa vitesse d'exécution améliorée. Cela démontre l'importance de comprendre les techniques d'optimisation du bytecode pour améliorer les performances du code Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn