Optimización de Janet con x32: 20% menos memoria y 50% más lento

Fuentes: Janet on x32: 32-bit Pointers, 64-bit Speed, 25% Less RAM

El uso de punteros de 32 bits en sistemas de 64 bits permite reducir significativamente el consumo de memoria y mejorar el rendimiento mediante una mejor utilización de la caché, aunque a costa de una menor velocidad de ejecución. El artículo detalla la implementación de la arquitectura x32 para el lenguaje de programación Janet, un enfoque que aprovecha la compatibilidad con el conjunto de instrucciones de 64 bits pero con punteros reducidos. El autor experimentó con la plataforma Mastodon, logrando una reducción del uso de memoria de 650 MB a 350 MB, lo que representa un ahorro del 25% en aplicaciones con heaps intensivas en punteros. Sin embargo, las pruebas realizadas en Arch Linux (basado en CachyOS) revelaron que, al compilar con las flags estándar de 32 bits (-m32), el rendimiento se ve comprometido: la ejecución se vuelve un 50% más lenta debido a la limitación de solo 8 registros en el modo x86 de 32 bits. Para obtener el rendimiento óptimo, se requiere el uso del modo x32 específico, que combina el conjunto de instrucciones de 64 bits con punteros de 32 bits, aunque este modo no está compilado por defecto en distribuciones modernas como Debian o Arch Linux. El texto proporciona una guía técnica para compilar Janet para x32, incluyendo la creación de un script de compilación que redefine el compilador y ajusta las flags de optimización. Además, se documenta la compatibilidad con Ubuntu 20.04 LTS, que mantiene soporte para x32 hasta su fin de soporte estándar en 2025, permitiendo probar estas optimizaciones en entornos de desarrollo sin producción. Este enfoque es particularmente útil para desarrolladores que buscan maximizar la eficiencia de memoria en sistemas embebidos o servidores con recursos limitados, aunque requiere una coordinación manual de dependencias y la recompilación de software, ya que la mayoría de las distribuciones no incluyen esta configuración por defecto.