gaminghackslogicielssourcestutoriels

Python while True ou while 1, une question de performances.



Voilà un certain temps que je me demandais si les performances d'une boucle while 1 étaient les mêmes qu'une boucle while True.
J'ai tout de suite pensé que while 1 serait plus lent car il s'agit d'une conversion en booléen d'un entier tandis que True était directement un booléen mais après test il se trouve que while 1 est plus rapide, et même 1.5 fois plus rapide.
Une strucure spéciale a été mise en place dans python pour ce type de boucle avec 1 mais pas avec True, ce qui explique tout.
  1. import time    
  2.   
  3. compteur = 0  
  4. t1 = time.clock()  
  5.   
  6. while True:  
  7.  compteur += 1  
  8.  if compteur == 1000000:  
  9.   break  
  10.   
  11. print(time.clock() - t1)  
  12.   
  13. compteur = 0  
  14. t1 = time.clock()  
  15.   
  16. while 1:  
  17.  compteur += 1  
  18.  if compteur == 1000000:  
  19.   break  
  20.   
  21. print(time.clock() - t1)  
  22.   
  23. raw_input()  
résultat 1 : 0.11s
résultat True : 0.17s

Donc : Il vaut mieux utiliser 1 plutôt que True, dans ses boucles while.
Valid XHTML 1.0 Strict CSS Valide ! phpMyVisites