EmailMainTagsEditHistoryDiscussion (3)

Actualización: Ya compilé Psyco en Debian de 64 bits.

Estoy un poco frustrado por no poder correr mis programas con Python usando el módulo psyco porque tengo una instalación de 64 bits. Usualmente obtengo una aceleración de 3X con Psyco.

Psyco es solo para Intel de 32 bits:

There are no plans to port Psyco to 64-bit architectures. This would be rather involved. Psyco is only being maintained, not further developed. The development efforts of the author are now focused on PyPy, which includes Psyco-like techniques. (http://codespeak.net/pypy).

Estuve leyendo un poco sobre PyPy (se pronuncia Pai Pai).

Hay un intérprete de Python escrito en este proyecto y está escrito en Rpython. RPython es un subconjunto de Python que puede ser compilado eficientemente. A la fecha en el proyecto PyPy tienen una implementación de Python compatible con CPython 2.5 pero no es más rápido que Python.

Ahora al punto. Estuve probando RPython con un programa de ejemplo. La idea es que usé el traductor de PyPy para tener una versión nativa del programa que se compila en C. Entre las limitaciones más importantes está el uso de enteros nativos que se podrían desbordar (no se desbordan en el programa de ejemplo).

El programa en versión C++ toma 26.6 segundos y el programa compilado usando el camino RPython→C→nativo toma 29.6 segundos.

$ g++ rpython-test.cpp -O3
$ time ./a.out 
11814485
real    0m26.597s
user    0m26.598s
sys     0m0.000s
# Descargar de http://codespeak.net/svn/pypy/dist/
cd pypy/translator/goal
$ ./translate.py --batch rpython-test.py
$ time ./rpython-test-c
11814485
real   0m29.560s
user   0m27.838s
sys    0m1.720s

Me gusta la idea de escribir algunos programas en RPython sobre todo sabiendo que se puede compilar. Si bien el lenguaje es bien restringido se obtiene una de las ventajas que la gente de PyPy aprovecha. Esto es, la posibilidad de ejecutar el programa en CPython de forma que se evalúen más restricciones en tiempo de ejecución. Y luego al tener evidencias de que el programa probablemente está bien se puede traducir a C para tener más desempeño. Al parecer RPython está pensado para facilitar la compilación cruzada (para otras plataformas) pero no he probado esto. Noté que PyPy genera código C para explorar la plataforma de destino antes de empezar la traducción a C del programa en RPython.

Me alegra saber que la gente de PyPy va por buen camino. Ya veremos si hay avances importantes en unos dos años.

En otro momento creo que habría intentado escribir un lenguaje sencillo para probar RPython. Hay una interpretación experimental (muy incompleta) de Scheme en PyPy.

Loading... Vote up! Vote down! Discussion (3)

Last update: 2010-03-17 (Rev 16753)

svnwiki $Rev: 15576 $