⏱️ Seu código está lento, ou parece que está?

Otimização sem medições prévias não é legal. Mas pior ainda são medições feitas "de qualquer jeito".

Muitos usam time.time() para tudo e obtêm números que não têm nada a ver com a realidade.

Leia a análise de como medir corretamente o desempenho em Python.
Dentro do artigo:
▪️ Wall Time vs CPU Time: Por que seu código pode "travar" por 5 segundos enquanto o processador trabalhou apenas 0,05s (e o que fazer a respeito).
▪️ timeit: Por que este é o melhor método para microbenchmarks e como usá-lo sem vergonha.
▪️ Jupyter Magic: Como medir velocidade com uma linha (%timeit), se você vive em notebooks.
▪️ Asyncio: Por que os métodos padrão mentem em código assíncrono e onde encontrar o temporizador correto loop.time().

Isso é o básico, sem o qual não se deve meter em refatoração.

👉 Perfilamento e medição de tempo de execução de código em Python: guia completo

#rtfm