Claylson Martins – Published 01/06/2022
Uma nova versão do Python deve sair até o mês de outubro com muitos novos recursos aguardados. Sendo assim, o próximo Python 3.11 terá como principal destaque o melhor desempenho. “O Python 3.11 é até 10-60 por cento mais rápido que o Python 3.10”, afirmam as notas de lançamento. Porém, ao mesmo tempo em que o Python 3.11 ganha maior desempenho, ele passa a consumir também ‘um pouco mais de memória’.
Como isso está sendo feito? Python 3.11 é a primeira versão a se beneficiar de um projeto chamado Faster CPython. Já o CPython é a versão padrão do interpretador.
Faster CPython é um projeto financiado pela Microsoft, cujos membros incluem o inventor do Python Guido van Rossum, o engenheiro de software sênior da Microsoft Eric Snow e Mark Shannon – que está sob contrato com a Microsoft como líder de tecnologia para o projeto.
Uma sessão agendada para o evento EuroPython a ser realizado em Dublin em julho centra-se em algumas das mudanças que permitem a aceleração. Shannon descreverá o “intérprete especializado adaptativo” no Python 3.11, que é o PEP (Python Enhancement Proposal) 659. Isso descreve uma técnica chamada especialização que, explica Shannon, “normalmente é feita no contexto de um compilador JIT [just in time], mas pesquisas mostram que a especialização em um interpretador pode aumentar significativamente o desempenho”.
O interpretador identifica o código que pode se beneficiar da especialização e “uma vez que uma instrução em um objeto de código tenha executado o suficiente, essa instrução será “especializada” substituindo-a por uma nova instrução que deverá ser executada mais rapidamente para essa operação”, afirma o PEP. A aceleração pode ser de “até 50 por cento”.
Shannon também identifica quadros de execução alocados consecutivamente, try-except de custo zero, layout de objeto mais regular e dicionários de objetos criados preguiçosamente em sua prévia da palestra.
Python 3.11 ganha maior desempenho em troca de ‘um pouco mais de memória’
Quando Devclass conversou com o membro do Python Steering Council e desenvolvedor principal Pablo Galindo sobre o novo criador de perfil de memória Memray, ele descreveu como a equipe Python está usando o trabalho da Microsoft na versão 3.11.
“Uma das coisas que estamos fazendo é tornar o interpretador mais rápido”, disse ele, “mas também usará um pouco mais de memória, só um pouco, porque a maioria dessas otimizações tem algum tipo de custo na memória , porque precisamos armazenar algumas coisas para usar mais tarde, ou porque temos uma versão otimizada, mas às vezes alguém precisa solicitar uma versão não otimizada para depuração, então precisamos armazenar ambas.”
Como ocorrerá esse maior desempenho?
Galindo explicou como o gerenciamento de memória é fundamental para o desempenho. O Python “tem seu próprio alocador de memória que não é o alocador do sistema”, disse ele. Não é porque “sabemos melhor como alocar a memória”, disse ele. Em vez disso, é porque o alocador do sistema precisa ser genérico, enquanto o interpretador Python sabe que usará a memória.
Um dos truques é reduzir o número de chamadas para o alocador do sistema em favor de alocar um pedaço maior. “Deixe-me ter um grande pedaço de memória, vou usar as diferentes partes dele e liberá-lo de uma só vez quando terminar, porque senão será muito lento”, disse ele.
Respondendo aos recentes testes de velocidade do Python 3.11, um desenvolvedor disse que “este pode ser o primeiro Python 3 que será realmente mais rápido (cerca de 5%) que o Python 2.7. Esperamos 12 anos por isso.”
Link do artigo: SempreUpdate