Profiling a Python code analysis pipeline: 157s → 12s by chasing bottlenecks