Optimisation du compilateur : Amélioration de la génération de nombres aléatoires presque sans division de Lemire

2025-03-09

L’auteur a amélioré un algorithme presque sans division pour générer des nombres aléatoires bornés (algorithme de Lemire). Une version précédente réduisait l’inflation du code en intégrant en ligne le chemin rapide, mais l’optimisation du compilateur était limitée. L’auteur a découvert que lorsque la limite est une constante au moment de la compilation, le seuil de rejet peut être précalculé et l’évitement de la division est inutile. La nouvelle implémentation n’effectue qu’un seul appel au générateur de nombres aléatoires, et le compilateur élimine automatiquement la boucle lorsque la limite est une puissance de deux. Ceci est plus efficace que la version de l’année dernière, et l’auteur explore des techniques d’optimisation similaires au moment de la compilation en Rust.