Alternativement, dans quelle mesure les autres sont-ils pires par rapport aux variables locales ?
Quel est le problème ?
Certains articles conseillent aux programmeurs Python d'utiliser des variables locales si elles seront beaucoup utilisées, même si elles sont seulement référencées mais non modifiées.
Par exemple, voici deux citations de « Making Python Programs Blazing Fast » :
"Il y a en fait une différence dans la vitesse de recherche, même entre - disons - une variable locale dans la fonction (la plus rapide), un attribut au niveau de la classe (par exemple self.name - plus lent) et une fonction globale par exemple importée comme time.time (la plus lente) ".
"Ne pas accéder aux attributs
Une autre chose qui pourrait ralentir vos programmes est l'opérateur point (.) qui est utilisé lors de l'accès aux attributs d'objet. Cet opérateur déclenche la recherche dans le dictionnaire à l'aide de getattribute, ce qui crée une surcharge supplémentaire dans votre code. "
De plus, ce ne sont pas les seules possibilités. Qu'en est-il des différences entre :
J'ai testé en utilisant tout cela dans des boucles avec 1 000 000 d'itérations, mais un travail minimal par itération à l'intérieur de celles-ci. Les fonctions étaient toutes des méthodes d'une classe, à l'exception de la fonction utilisée pour tester les attributs de fonction pour les fonctions en dehors d'une classe.
Une fonction typique était de la forme :
def testINSA(self): s=0 for i in range(10000000): s+=self.INSA # what is after the = differs in each function. return s
Tout le code est au bas de cet article.
| | | | Relative | | Where | Time | Rate | Performance | | LV Local Variable | 1.92 | 0.5208 | 100% | | GV Global Variable | 1.99 | 0.5020 | 96% | | ISA Instance Slotted Attribute | 2.09 | 0.4789 | 92% | | CA Class Attribute | 3.12 | 0.3204 | 62% | | INSA Instance Non-Slotted Attribute | 3.28 | 0.3051 | 59% | | FA Function Attribute | 3.49 | 0.2865 | 55% | | MA Method Attribute | 6.29 | 0.1589 | 31% |
Explication :
Lorsque vous comparez les performances, comparez toujours les (Réalisations/Ressources), telles que les miles par gallon ou les calculs par seconde, plutôt que les litres par km ou les secondes par calcul.
Oui, les variables locales sont les plus rapides.
Les performances des différents types de variables regroupées en trois groupes.
La surprise est que par rapport à la sagesse commune, les globaux sont le deuxième meilleur, même meilleur que les attributs d'instance à emplacements dans une classe. Une autre surprise est que les attributs de méthode sont les pires.
def testINSA(self): s=0 for i in range(10000000): s+=self.INSA # what is after the = differs in each function. return s
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!