Otimização do Compilador: Melhorando a Geração de Números Aleatórios Quase Sem Divisão de Lemire
2025-03-09
O autor melhorou um algoritmo quase sem divisão para gerar números aleatórios limitados (algoritmo de Lemire). Uma versão anterior reduziu a inflação de código inserindo o caminho rápido, mas a otimização do compilador era limitada. O autor descobriu que, quando o limite é uma constante em tempo de compilação, o limite de rejeição pode ser pré-computado e a evasão de divisão é desnecessária. A nova implementação tem apenas uma chamada para o gerador de números aleatórios, e o compilador elimina automaticamente o loop quando o limite é uma potência de dois. Isso é mais eficiente do que a versão do ano passado, e o autor explora técnicas de otimização semelhantes em tempo de compilação em Rust.
(dotat.at)