“Make things as simple as possible, but not simpler.” — Albert Einstein “Premature optimization is the root of all evil.” — Donald E. Knuth
It’s often said that Python is necessarily slow and that we have to write the critical parts of our program in a compiled language to get the maximum performance. While this is true to a certain extent, it is also true that we can work out certain bits of our Python code and gain some microseconds, leaving the rewriting of our program in C++ or Fortran as a last resource.
Bring your slow Python algorithm and we will use profiling, memory profiling, numba and a bit of common sense to try and make it run as fast as possible! Sometimes we will be able to make some suggestions of new algorithms or architectures, other times we will be able to spot the single line that consumes 90 % of our running time, but either way we will both learn about software performance a lot.