Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
No Python 3.12, pequenas mudanças no bytecode estão impactando o desempenho de loops e o acesso a variáveis locais, especialmente quando usamos exec() para avaliações dinâmicas.
Na prática, notei uma discrepância entre exec() e atribuições convencionais no escopo local, que pode afetar a performance. Essa diferença está relacionada ao uso de LOAD_FAST versus LOAD_DEREF, o que parece ser uma otimização do interpretador.
Para quem lida com código que roda muitas vezes em loops críticos, vale a pena entender esses detalhes. Pode ser a diferença entre uma aplicação rápida ou um gargalo silencioso. Como vocês têm feito para lidar com essas nuances na prática? Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
No meu fluxo, tento sempre evitar exec() em trechos críticos, pq a manutenção fica mais difícil e o risco de bugs aumenta.
Acho que essa questao de cache de variaveis fica mais evidnte em sistemas que usam eval ou exec direto. No meu time tentamos evitar essas evals em loops de alta frequencia por causa do impacto na latencia.
Concordo, Diego. Aqui no meu time, a gente fez uns testes com loops simples e notou que usar variáveis locais normais ainda é mais rápido que eval, por exemplo.