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 16:20]
marc dexet créée
python:optimisation_python [2017/11/24 16:41] (Version actuelle)
marc dexet [Optimisation en Python]
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: 2017/11/24 16:20 par marc dexet