Codon, um Compilador Python escrito com C++ e LLVM

Alto desempenho e nenhum tipo de sobrecarga! Em um teste que eu fiz, o ganho de desempenho foi maior que 600%.


Codon, um Compilador Python escrito com C++ e LLVM


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.


Aprenda Python do Zero

Curso de Python do Iniciante ao Avançado

https://terminalroot.com.br/python


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.


Instalação

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 $SHELL

Para testar rode:

codon --version


Utilização

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.py

No 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
./fib

Você ainda pode compilar com optimização do LLVM

codon build -release -llvm fib.py
./fib

Analisando o desempenho

Quando 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.

Resultado usando /usr/bin/python

time python main.py 
1000000Ok
real	0m6,264s
user	0m3,530s
sys     0m2,415s

Ou seja, execução real: mais de 6 segundos. 😞

Resultado usando codon

codon build -release -exe main.py
time ./main
1000000Ok
real	0m0,795s
user	0m0,254s
sys     0m0,063s

Execução real: em menos de 1 segundo!!! 😲



Links úteis


python cpp llvm


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!