formations/python-perfs
Julien Palard 7341368eba
python perf: adding pypy, remove a cache-bypass, rust in release mode.
2023-10-09 23:11:27 +02:00
..
bin Working on python-perfs. 2023-09-22 15:34:12 +02:00
examples python perf : rust 2023-10-09 16:00:49 +02:00
static Python perfs to prod. 2023-06-15 14:42:36 +02:00
.gitignore python-perfs: proofreading 2023-10-09 15:28:33 +02:00
Makefile Dedupicating Makefiles. 2022-09-23 16:14:36 +02:00
README.md python perfs: Travail sur les TP. 2023-09-26 08:59:08 +02:00
perfs.md python perf: adding pypy, remove a cache-bypass, rust in release mode. 2023-10-09 23:11:27 +02:00
requirements.txt python perf : rust 2023-10-09 16:00:49 +02:00

README.md

Python Performances

Les slides : https://mdk.fr/python-perfs

Description

Destinée aux développeurs Python aguerris, cette formation approche les différents moyens daméliorer les performances dun programme écrit en Python.

Les objectifs

  • Savoir mesurer les performances dun 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 compilateurs (Just-In-Time et Ahead-Of-Time) 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, …).

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.

Mise en pratique

  • Rédaction naïve dun algorithme (modèle du tas de sable abélien).
  • Étude de la complexité, du temps dexécution, et des goûlots détranglements des implémentations.
  • Implémenter des optimisations ciblées par les mesures précédentes.
  • Tentative dutiliser des structures de données spécialisées.
  • Tentatives dutiliser différents compilateurs (JIT et Ahead of Time) et interpréteurs.