Probando Shed Skin, un compilador de Python

( Los comentarios están cerrados por que los spammers se ceban con esta entrada. )

Shed Skin [ https://code.google.com/p/shedskin/ ] es un compilador de Python a C++, que puede incrementar mucho el rendimiento de un programa ( hablan de 2 a 20 veces más que Psyco y 2 a 200 veces más que CPython, la implementación base ), muy fácil de usar y que aunque aún se encuentra en desarrollo es bastante usable (no están todas las librerías implementadas y cosas así).

Una vez descargado [ https://code.google.com/p/shedskin/downloads/list ] e instalado, para usarlo solo hay que lanzar shedskin sobre el script y generará un Makefile.

Para probar la eficiencia compararemos una implementación algoritmo de fibonacci ( en forma puramente recursiva ) con Python, compilada con ShedSkin y en C puro.

La implementación en Python def fibo(i):

if (i < 2):

   return i

else:

   return fibo(i-1) + fibo(i-2)

fibo(35)

La implementación en C int fibo(int i){

if (i < 2){

   return i;

}

else{

   return (fibo(i-1) + fibo(i-2));

}

}

int main(int argc, char**argv){

fibo(35);

return 0;

}

Ambas son equivalentes, si comparamos la velocidad usando únicamente python con la que tiene la versión nativa en C, la diferencia es clara:

[caption id="attachment_407" align="aligncenter" width="300" caption="Le saca mucha ventaja"][/caption]

(Y se mantiene si se repiten las pruebas) Ahora compilamos el script en python con shed skin shedskin fibo.py # Genera fibo.cpp y fibo.hpp y Makefile

make

Si lo ejecutamos veremos que obtiene tiempos incluso ligeramente menores que la versión en puro C ¡!

[caption id="attachment_408" align="aligncenter" width="300" caption="Ligera diferencia a favor de ShedSkin"][/caption]

Una ganancia de velocidad nada despreciable para el poco esfuerzo ( 2 comandos :P )

Y eso es todo, ShedSkin es un proyecto muy interesante y una forma muy sencilla y eficaz de exprimir los scripts en python.

[Referencias] https://code.google.com/p/shedskin/

untagged

One liners ( 1 ): Lo ves, no lo ves... $RANDOM! » « One liners ( 2 ): alguien dijo...