Un Metro RP2040 calcula el conjunto de Mandelbrot 19,7 veces más rápido con CircuitPython Turbo que con el bytecode habitual de Python, según la documentación de Adafruit. El proyecto es de Mikey Sklar, está publicado en GitHub y le agrega a CircuitPython la compilación previa de las funciones críticas.
Python arrastra el mismo problema que tuvo BASIC. Es rápido de escribir y por eso se volvió el primer lenguaje de una generación entera de programadores, pero se interpreta línea por línea y eso se paga en velocidad de ejecución. En un microcontrolador el costo se nota antes, y CircuitPython se topaba con el techo del hardware mucho antes de lo necesario.
¿Qué cambia respecto de CircuitPython normal?
CircuitPython es un fork de MicroPython con agregados propios para las placas de Adafruit. Uno de los que no había heredado era Viper, el compilador a código máquina del proyecto original. Hasta esta versión, CircuitPython corría únicamente en modo interpretado.
Turbo trae los dos modos de MicroPython. Se marca el bloque de código que interesa acelerar y el resto del programa sigue igual.
- Modo native, donde las instrucciones se compilan pero los valores siguen siendo objetos de Python. La ganancia ronda las 3 veces y no obliga a reescribir nada.
- Modo viper, que exige declarar los tipos de las variables y los punteros. Ahí la aceleración va de 20 a 70 veces, según qué haga el código.
| Modo | Aceleración declarada | Qué hay que reescribir |
|---|---|---|
| Interpretado | es la referencia | nada |
| Native | cerca de 3 veces | marcar la función |
| Viper | de 20 a 70 veces | marcar, declarar tipos y punteros |
La prueba de Adafruit con el conjunto de Mandelbrot en un Metro RP2040 dio 3 veces en native y 19,7 en viper, o sea el extremo bajo del rango que promete ese modo.
Lo que todavía falta
CircuitPython Turbo no admite ensamblador en línea. Es curioso, porque MicroPython, el proyecto del que desciende, sí lo tiene.
Python en microcontroladores no sirve para todo, pero el catálogo de lo que se ha hecho con él es amplio. Hackaday ha cubierto desde bicicletas eléctricas hasta un reproductor de música inspirado en Winamp.
¿Qué implica para un maker en Chile?
El RP2040 de la prueba es la misma pieza que llevan la Raspberry Pi Pico y los clones que se consiguen acá por bastante menos que una placa Metro de Adafruit. La aceleración depende del núcleo y no de la marca de la placa, así que quien ya tiene un RP2040 en el cajón puede medirlo sin comprar nada.




