Maison > développement back-end > Tutoriel Python > Pourquoi le code Python est-il plus rapide dans les fonctions ?

Pourquoi le code Python est-il plus rapide dans les fonctions ?

Susan Sarandon
Libérer: 2024-11-12 22:01:01
original
665 Les gens l'ont consulté

Why is Python Code Faster Inside Functions?

Code Python plus rapide dans les fonctions : dévoilement de l'exécution optimisée

Lors de l'exécution de code Python, l'inclusion d'opérations dans des fonctions entraîne souvent des gains de performances significatifs. Cette différence marquée suscite la curiosité :为何 Python 代码在函数中执行更快?

Enquête sur la disparité de vitesse

Considérez les extraits de code suivants :

def main():
    for i in xrange(10**8):
        pass
main()
Copier après la connexion

Courir ce code donne un temps d'environ 1,8 seconde. Cependant, lorsque la boucle for est exécutée en dehors d'une fonction :

for i in xrange(10**8):
    pass
Copier après la connexion

L'exécution prend beaucoup plus de 4,5 secondes.

Analyse du bytecode : découvrir la raison sous-jacente

Pour comprendre cet écart de performances, nous examinons le bytecode généré par Python. À l'intérieur d'une fonction, le bytecode affiche une séquence d'opérations qui établissent une boucle, calculent la plage et la parcourent. Cette structure est optimisée pour la vitesse.

Au niveau supérieur, le bytecode diffère légèrement. La variable i est déclarée comme globale, ce qui entraîne une opération de magasin plus lente (STORE_NAME) que l'opération de magasin local (STORE_FAST) utilisée dans la fonction.

Pour examiner le bytecode, le module dis fournit une aide précieuse. Les commandes suivantes démontent respectivement la fonction et le code de niveau supérieur :

import dis
dis.dis(main)
dis.dis(compile('for i in xrange(10**8): pass', '', 'exec'))
Copier après la connexion

Conclusion

L'avantage en termes de performances de l'exécution de code dans des fonctions en Python provient des optimisations dans exécution du bytecode. L'utilisation de variables locales, représentées par l'instruction STORE_FAST, améliore considérablement la vitesse d'exécution par rapport à l'utilisation de variables globales, qui impliquent l'instruction STORE_NAME plus lente.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal