Outils pour utilisateurs

Outils du site


python:optimisation_python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
python:optimisation_python [2017/11/24 15:20] – créée marc dexetpython:optimisation_python [2017/11/24 15:41] (Version actuelle) – [Optimisation en Python] marc dexet
Ligne 1: Ligne 1:
 ====== Optimisation en Python ====== ====== Optimisation en Python ======
  
-===== Optimisation prématurée =====+L'optimisation consiste à rendre plus rapides ou plus efficaces des portions de codes.  
 +C'est une démarche délicate et parfois chronophage.
  
-===== \\ +**Il faut parfois évaluer le coût de l'optimisation au regard du bénéfice obtenu.**
-L'optimisation en Python est une démarche que l'on entreprendre quand un problème de performance est constaté. Une règle de génie logicielle dit : =====+
  
-Optimization is Evil+===== Attention à l'optimisation prématurée ===== 
 + 
 +L'optimisation est une démarche qui fait suite à la constatation un problème de performance. Il peut être tentant de le faire pendant l'écriture du code. L'expérience cumulée de plusieurs génération de développeur montre que c'est une erreur. 
 + 
 +Une règle de génie logiciel dit :  
 + 
 +  Optimization is Evil
  
 Cela signifie que chercher l'optimisation avant de s'être assurer que le code fait bien ce que l'on attend de lui est contre-productif et met en péril la maintenabilité du code. Cela signifie que chercher l'optimisation avant de s'être assurer que le code fait bien ce que l'on attend de lui est contre-productif et met en péril la maintenabilité du code.
  
-En Python, la seule exception à cette règle est de vouloir travailler sur des ensembles de valeurs //qui peuvent devenir conséquents// avec les types python.\\ +==== Le bon outil pour le bon usage ==== 
-Il faut passer très rapidement à l'utilisation de librairies spécialisées comme http://www.numpy.org/ ou https://pandas.pydata.org/.+ 
 +Une  exception notable est la manipulation d'ensembles de valeurs //qui peuvent devenir conséquents// avec les seules types python (dict, list, ...). 
 + 
 +Pour le calcul, Python n'est pas un outil très pertinent. Il est nécessaire de s'appuyer sur des librairies spécialisées comme http://www.numpy.org/ qui sont écrites en C++. 
 + 
 +====== Les anti-patterns ====== 
 + 
 +TBD:  mettre ici les doubles boucles python 
 + 
 +====== Les solutions ====== 
 + 
 +TBD: refaire le benchmarking  
 + 
 +===== Numba ===== 
 + 
 +https://github.com/numba/numba 
 + 
 +TBD: Expliquer le contexte 
 + 
 +<code python> 
 +from numba import jit
  
 +@jit
 +def ma_function_a_optimiser():
 +   ...
 +</code>
  
python/optimisation_python.1511536857.txt.gz · Dernière modification : de marc dexet