- O compilador JIT do CPython alcançou desempenho 11~12% mais rápido no macOS AArch64 e 5~6% mais rápido no Linux x86_64, atingindo a meta antes do previsto
- Nas versões 3.13~3.14, o JIT era mais lento que o interpretador, mas o desempenho melhorou muito com desenvolvimento centrado na comunidade e melhorias estruturais
- Tentativas experimentais como trace recording e reference count elimination foram pontos de virada importantes
- Contribuidores centrais como Savannah Ostrowski, Mark Shannon, Diego Russo e Brandt Bucher, além de muitos novos participantes, colaboraram juntos
- Este resultado mostra que desenvolvimento guiado pela comunidade e cultura de colaboração podem gerar efeitos reais na melhoria de desempenho em open source
Situação atual da melhoria de desempenho do JIT do CPython
- No macOS AArch64, registrou desempenho 11~12% mais rápido; no Linux x86_64, 5~6% mais rápido
- Os valores foram medidos por média geométrica, e em alguns benchmarks a variação foi de 20% mais lento a mais de 100% mais rápido
- O suporte a free-threading ainda não está concluído, com meta para as versões 3.15/3.16
- Nas versões 3.13~3.14, o JIT era mais lento que o interpretador, mas nesta versão houve um ganho de velocidade significativo
Desenvolvimento do JIT centrado na comunidade
- Após a interrupção do principal patrocínio da equipe Faster CPython em 2025, houve transição para um modelo de desenvolvimento liderado pela comunidade
- Meta: melhoria de 5% na 3.15, melhoria de 10% na 3.16 e suporte a free-threading
- Para reduzir o bus factor, foram garantidos pelo menos dois mantenedores em cada etapa (frontend, middle-end e backend)
- Problemas complexos foram divididos em partes menores para incentivar a participação de novos contribuidores
- Brandt Bucher separou unidades de trabalho por meio de “mega-issues”
- 11 contribuidores transformaram instruções do interpretador para ficarem mais amigáveis às otimizações do JIT
- A cultura de incentivo a contribuições e compartilhamento de conquistas ajudou a manter a participação
- Como resultado, o desempenho no Linux x86_64 melhorou de 1% para 3~4%
Principais pontos de virada técnicos
Trace recording
- No core sprint do CPython, houve transição para um frontend baseado em tracing
- No início era 6% mais lento, mas o desempenho melhorou com a introdução da estrutura dual dispatch
- A velocidade do interpretador base foi mantida, minimizando o aumento do tamanho do interpretador
- A introdução de trace recording aumentou a cobertura de código do JIT em 50%, melhorando depois a eficiência das otimizações
Reference count elimination
- Inspirado no trabalho de otimização de bytecode de Matt Page
- Houve ganho de desempenho com a remoção de branches gerados durante a diminuição da contagem de referências
- Foi confirmado que mesmo a remoção de um único branch já reduz o custo acumulado
- É fácil de paralelizar e foi usado para treinar novos contribuidores como tarefa de aprendizado da estrutura do JIT
Infraestrutura e composição da equipe
- Savannah Ostrowski opera a infraestrutura de medição de desempenho do JIT com quatro máquinas
- Os resultados diários de execução do JIT permitem detectar cedo regressões de desempenho
- Diego Russo ficou responsável por melhorar o JIT para hardware ARM e a compatibilidade com profiler
- Brandt Bucher construiu a base do backend de código de máquina, reduzindo a barreira de entrada para novos contribuidores
Colaboração e troca de conhecimento
- Conselhos de CF Bolz-Tereick sobre o PyPy ajudaram a aprofundar o entendimento do design do JIT
- O intercâmbio com especialistas em compiladores, como Max Bernstein, garantiu motivação contínua e crescimento técnico
- A experiência de analisar o código do PyPy contribuiu para a melhoria da qualidade do JIT do CPython
Conclusão
- O JIT do Python 3.15 é resultado da combinação de colaboração da comunidade, experimentação técnica e melhorias de infraestrutura
- Pessoas, sorte e cultura de colaboração se mostraram forças centrais para a inovação de desempenho em open source
Ainda não há comentários.