gaminghackslogicielssourcestutoriels

Python quel est le coût des fonctions ?



Vous avez ou vous allez sûrement apprendre à utiliser les fonctions en python et vous vous demandez si la création de fonctions programmées en python peut entraîner une diminution des performances de votre programme.
  1. import time  
  2.   
  3. LISTE = xrange(10000000)  
  4.   
  5. # 1er exemple sans fonction  
  6. t1 = time.clock()  
  7. for i in LISTE:  
  8.  pass  
  9. print(time.clock() - t1)  
  10.   
  11. # 1er exemple avec fonction  
  12. def ma_fonction():  
  13.  pass  
  14. t1 = time.clock()  
  15. for i in LISTE:  
  16.  ma_fonction()  
  17. print(time.clock() - t1)  
  18.   
  19. # 1er exemple sans fonction  
  20. t1 = time.clock()  
  21. for i in LISTE:  
  22.  x = i+1  
  23.  x = x+1  
  24. print(time.clock() - t1)  
  25.   
  26. # 1er exemple avec fonction  
  27. def ma_fonction(x):  
  28.  return x+1  
  29. t1 = time.clock()  
  30. for i in LISTE:  
  31.  x = ma_fonction(i)  
  32.  x = ma_fonction(x)  
  33. print(time.clock() - t1)  
  34.   
  35. # 1er exemple sans fonction  
  36. t1 = time.clock()  
  37. for i in LISTE:  
  38.  x = (i+1)*2+(i/3)  
  39.  x = (x+1)*2+(x/3)  
  40. print(time.clock() - t1)  
  41.   
  42. # 1eme exemple avec fonction  
  43. def ma_fonction(x):  
  44.  return (x+1)*2+(x/3)  
  45. t1 = time.clock()  
  46. for i in LISTE:  
  47.  x = ma_fonction(i)  
  48.  x = ma_fonction(x)  
  49. print(time.clock() - t1)  
  50.   
  51. raw_input()  
itération pass : 0.42
itération pass (fonction) : 1.47
itération calcul simple : 2.13
itération calcul simple (fonction) : 4.32
itération calcul complexe : 4.27
itération calcul complexe (fonction) : 5.81

Donc : Il vaut mieux éviter de "mettre en fonction" des instructions simples, toutefois si les instructions que vous souhaitez mettre en fonction sont plus grosses, coût est limité.
Valid XHTML 1.0 Strict CSS Valide ! phpMyVisites