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 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.
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++.
TBD: mettre ici les doubles boucles python
TBD: refaire le benchmarking
https://github.com/numba/numba
TBD: Expliquer le contexte
from numba import jit @jit def ma_function_a_optimiser(): ...