Jul 03, 2024

Wiki

Python

Aide

edit SideBar

Search

Optimisation De Fonction


Python étant un langage interprété, il ne connaît pas à l'avance le code qu'il va exécuter : à la différence d'autres langages, il n'y a pas d'optimisation des appels de fonctions fréquemment utilisées, par un appel à une adresse mémoire unique.

Pour contourner le problème, et gagner du temps à chaque nouvel appel d'une fonction donnée, on peut stoquer cette dernière dans une variable locale, comme l'illustre le bout de code suivant :

  >>> from time import time
  >>> def toto(N):
  ...     x=float(N)/1000
  ...     x=1000*x
  ... 
  >>> def sans(N):
  ...     dd=time()
  ...     for k in range(N):
  ...         toto(k)
  ...     return time()-dd
  ... 
  >>> def avec(N):
  ...     tt=toto
  ...     dd=time()
  ...     for k in range(N):
  ...         tt(k)
  ...     return time()-dd
  ... 

Dans ce qui précède, la fonction sans appèle N fois la fonction toto, sans l'avoir stoquée dans une variable au préalable, quand la fonction avec fait la même chose, en utilisant une variable locale pour toto. Regardons le nombre de fois où avec est plus rapide que sans...

  >>> cpt = 0
  >>> for k in range(1000):
  ...     if sans(10000) > avec(10000):
  ...          cpt+=1
  ... 
  >>> print float(cpt)/10
  93.2

On trouve donc un gain de temps dans 93,2% des cas.

Page Actions

Recent Changes

Group & Page

Back Links