diff --git a/python-perfs/README.md b/python-perfs/README.md new file mode 100644 index 0000000..05368d3 --- /dev/null +++ b/python-perfs/README.md @@ -0,0 +1,45 @@ +# Python Performances + +## Description + +Destinée aux développeurs Python aguerris, cette formation approche +les différents moyens d’améliorer les performances d’un programme +écrit en Python. + + +## Les objectifs + +- Savoir mesurer les performances d’un programme et identifier les goulots d’étranglement. +- Prendre conscience des impacts des différentes structures de données, de leur complexité algorithmique. +- Découvrir les différents "JIT" (*Just-In-Time* compilation) de l’écosystème Python. +- Découvrir la variété des interpréteurs Python et leurs caractéristiques. +- Entrelacer du code natif et du Python. + + +## Pré-requis + +- Excellente connaissance du langage, du niveau de la formation « Python avancé ». + + +## Programme + +Bien choisir sa structure de donnée : + +- comparaison asymptotique, +- comprendre les implémentations `O(1)`. + +Les outils de mesure : + +- Les outils extérieurs à Python (`time`, `hyperfine`, …). +- Configurer sa machine pour avoir des mesures reproductibles. +- Les outils de la bibliothèque standard (`cProfile`, `pstats`, `timeit`). +- Les outils tiers (`pyperf`, `snakeviz`, `Scalene`, `vprof`, …). + +Les JIT, compilateurs, et interpréteurs tiers : + +- PyPy, numba, cython, pythran, nuitka, mypyc, pyston, … + +Utiliser du code natif pour optimiser ponctuellement : + +- Interfacer du C ou du C++ avec Python en utilisant cython. +- Rédiger un module Python en C.