Optimización del compilador: Mejora de la generación de números aleatorios casi sin división de Lemire

2025-03-09

El autor mejoró un algoritmo casi sin división para generar números aleatorios acotados (algoritmo de Lemire). Una versión anterior redujo la inflación de código al insertar en línea la ruta rápida, pero la optimización del compilador era limitada. El autor descubrió que cuando el límite es una constante en tiempo de compilación, el umbral de rechazo se puede precalcular y la evitación de la división es innecesaria. La nueva implementación tiene solo una llamada al generador de números aleatorios, y el compilador elimina automáticamente el bucle cuando el límite es una potencia de dos. Esto es más eficiente que la versión del año pasado, y el autor explora técnicas de optimización similares en tiempo de compilación en Rust.