Hoja de Helecho en Cython

A modo de prueba de concepto aproveché un ratito libre para implementar uno de los trabajos obligatorios que asignamos a los alumnos en una de mis materias en Facultad.

El trabajo consiste en desarrollar un programa que dibuja un conjunto de Fractales mediante un sistema iterativo de funciones. La siguiente imagen muestra el programa corriendo para una configuración que corresponde a una Hoja de Helecho:


Hoja de Helecho

Hoja de Helecho. Los cálculos del fractal fueron realizados en Cython y el resultado fue dibujado con Pygame.



La novedad de esta aplicación consistió en que si bien la prototipé en Python, me tomé un momento para portarla a Cython, con el fin de determinar si podía llegar a notar una mejora en la performance. Cython no es más que una variación de Python que permite anotar las variables con tipos de datos C. En vez de generar código interpretado, Cython compila el módulo a C y crea una biblioteca compartida.

La optimización principal para el Fractal consistió en reemplazar el uso de una lista de Python de 10.000 elementos (utilizada para almacenar los puntos calculados) por un array de C. Por menos que esto parezca, el evitar tener que usar la lista de Python mejoró la performance general del cálculo en un 11%, aproximadamente.

Dentro de todo, 11% no está mal, sobre todo si tenemos en cuenta que el único cambio fue la declaración de la lista (y escribir un archivo de setup). El compilador de Cython se encargó del resto.

Creo que por más que se encuentre en sus primeras versiones, Cython ofrece mucho potencial para optimizar aplicaciones Python. Todo lo que uno debe hacer es dedicar algo de tiempo para encontrar las porciones críticas en performance en su código, anotar las variables apropiadas con tipos de datos C, y dejar que Cython se encargue del resto.

This entry was posted in Computación Gráfica, Programacion, Python. Bookmark the permalink.

One Response to Hoja de Helecho en Cython

  1. Varrojo says:

    Puedes encontrar los Fractales necesarios para obtener la Hoja de Helecho aquí: http://www.stsci.edu/~lbradley/seminar/ifs.html

Comments are closed.