Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:optimisation_python [2017/11/24 16:31] marc dexet |
python:optimisation_python [2017/11/24 16:41] (Version actuelle) marc dexet [Optimisation en Python] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
C'est une démarche délicate et parfois chronophage. | 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. | + | **Il faut parfois évaluer le coût de l'optimisation au regard du bénéfice obtenu.** |
===== Attention à l'optimisation prématurée ===== | ===== Attention à l'optimisation prématurée ===== | ||
Ligne 16: | Ligne 16: | ||
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. | ||
- | ===== Le bon outil pour le bon usage ===== | + | ==== Le bon outil pour le bon usage ==== |
Une exception notable est la manipulation d'ensembles de valeurs //qui peuvent devenir conséquents// avec les seules types python (dict, list, ...). | Une exception notable est la manipulation d'ensembles de valeurs //qui peuvent devenir conséquents// avec les seules types python (dict, list, ...). | ||
Ligne 22: | Ligne 22: | ||
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++. | 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> | ||