コンパイラ最適化:Lemireのほぼ除算不要な乱数生成の改善

2025-03-09

著者は、範囲内の乱数を生成するほぼ除算不要なアルゴリズム(Lemireアルゴリズム)を改良しました。以前のバージョンでは、高速パスをインライン化することでコードの肥大化を削減していましたが、コンパイラの最適化は限定されていました。著者は、上限がコンパイル時定数の場合は、棄却閾値をコンパイル時に計算でき、除算の回避は不要であることを発見しました。新しい実装では、乱数生成器への呼び出しは1回だけで、上限が2の累乗の場合は、コンパイラがループを自動的に削除します。これは昨年のバージョンよりも効率的で、著者はRustでの同様のコンパイル時最適化技術について考察しています。