Python · Avançado · Português · Técnico
interpretador especializante
Técnica do CPython 3.11 em diante que observa os tipos vistos em cada instrução e a troca por versões especializadas, mais rápidas, desfazendo a troca se os tipos mudarem.
Onde usar
Explica por que código quente com tipos estáveis ficou mais rápido nas últimas versões, e por que funções polimórficas se beneficiam menos. Em benchmarks, o aquecimento importa.
Em código
import dis
def soma(a, b):
return a + b
for _ in range(1000):
soma(1, 2)
dis.dis(soma, adaptive=True)
# mostra, por ex., BINARY_OP_ADD_INTExemplos
O ganho veio do interpretador especializante, não de mudar o algoritmo.
Com tipos estáveis, o interpretador especializante acelera esse laço.
Cuidado
Não é um JIT que gera código de máquina: continua interpretando bytecode, só que com instruções mais específicas.
Sinônimos
interpretador adaptativo