컴파일러 최적화: Lemire의 거의 나눗셈 없는 난수 생성 개선

2025-03-09

저자는 범위 내의 난수를 생성하는 거의 나눗셈이 없는 알고리즘(Lemire 알고리즘)을 개선했습니다. 이전 버전에서는 빠른 경로를 인라인화하여 코드 팽창을 줄였지만, 컴파일러 최적화는 제한적이었습니다. 저자는 상한이 컴파일 시 상수인 경우, 기각 임계값을 컴파일 시에 계산할 수 있으며, 나눗셈 회피는 불필요하다는 것을 발견했습니다. 새로운 구현에서는 난수 생성기 호출이 한 번만 이루어지며, 상한이 2의 거듭제곱인 경우 컴파일러가 루프를 자동으로 제거합니다. 이는 작년 버전보다 효율적이며, 저자는 Rust에서 유사한 컴파일 시 최적화 기술에 대해 논의하고 있습니다.