
Codon é um compilador Python de alto desempenho que compila código Python para código de máquina nativo sem qualquer sobrecarga de tempo de execução.
O compilador foi escrito com C++ e utiliza LLVM como optimizador de código Assembly final. Ao contrário do Python, o Codon suporta multithreading nativo, o que pode levar a acelerações ainda maiores.
Você pode compilar o Codon na sua máquina, no entanto, existem binários pré-compilados para Linux e macOS.
No caso do Linux basta rodar esse comando abaixo:
É necessário possuir o cURL instalado.
/bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)"Ao final da instalação ele pedirá para você confirmar a adição do binário à sua variável $PATH, tecle y para sim. Se não funcionar, mesmo abrindo em um novo terminal, como ele mesmo orienta, rode os seguintes comandos:
echo 'export PATH=${HOME}/.codon/bin:${PATH}' >> ~/.bashrc
exec $SHELLPara testar rode:
codon --version
Suponhamos que você possua esse código Python que é uma função Fibonacci, você pode interpretar o código com o próprio Codon:
def fib(n):
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
fib(1000)Para rodar sem compilar:
codon run fib.pyNo entanto, o desempenho não será muito bom. O correto mesmo é você compilar esse código para um binário e então rodar o binário, exemplo:
codon build -release -exe fib.py
./fibVocê ainda pode compilar com optimização do LLVM
codon build -release -llvm fib.py
./fibQuando utilizamos um loop for com 1 milhão de ciclos em Python, como fizemos nesse vídeo, o Codon foi cerca de 600% mais veloz que o interpretador nativo(versão 3.10.9).
O arquivo/código de teste pode ser obtido aqui.
/usr/bin/pythontime python main.py
1000000Ok
real 0m6,264s
user 0m3,530s
sys 0m2,415sOu seja, execução real: mais de 6 segundos. 😞
codoncodon build -release -exe main.py
time ./main
1000000Ok
real 0m0,795s
user 0m0,254s
sys 0m0,063sExecução real: em menos de 1 segundo!!! 😲