Reasonable performance analysis skills are essential for writing efficient code. However, while there are excellent tutorials covering different parts of the high performance Python spectrum, the performance analysis aspect is generally implicitly assumed to be self-evident. Yet, many aspiring programmers are oftentimes unfamiliar with principled techniques to identify performance bottlenecks in their code.
In this tutorial, I will first describe the Python performance analysis ecosystem with broad strokes, and then turn to interactive demonstrations to showcase the most prominent tools of trade on a real practical problem.
Requirements: basic Python and NumPy skills, working pip (or pre-installed statprof.py, line_profiler and memory_profiler) and valgrind + kcachegrind pre-installed (for the practical session).