プログラマーの間で長年信じられてきたのは、整数計算は本質的に浮動小数点計算より高速です。ただし、この仮定は最新のマルチコア プロセッサには当てはまらない可能性があります。
さまざまな CPU アーキテクチャでの整数および浮動小数点計算の相対速度を評価するために、詳しく調べてみましょう。いくつかのデータに変換:
64 ビット Intel Xeon X5550 @ 2.67GHz、 gcc 4.1.2 -O3:
short add/sub: 1.005460 [0] short mul/div: 3.926543 [0] long add/sub: 0.000000 [0] long mul/div: 7.378581 [0] long long add/sub: 0.000000 [0] long long mul/div: 7.378593 [0] float add/sub: 0.993583 [0] float mul/div: 1.821565 [0] double add/sub: 0.993884 [0] double mul/div: 1.988664 [0]
32 ビット デュアル コア AMD Opteron(tm) プロセッサ 265 @ 1.81GHz、gcc 3.4.6 -O3:
short add/sub: 0.553863 [0] short mul/div: 12.509163 [0] long add/sub: 0.556912 [0] long mul/div: 12.748019 [0] long long add/sub: 5.298999 [0] long long mul/div: 20.461186 [0] float add/sub: 2.688253 [0] float mul/div: 4.683886 [0] double add/sub: 2.700834 [0] double mul/div: 4.646755 [0]
これらの結果は、これらのアーキテクチャでは、整数演算と浮動小数点演算のパフォーマンスの差は比較的小さいです。場合によっては、特に「long long」などの長いデータ型の場合、浮動小数点計算が整数演算よりも高速になることがあります。
浮動小数点のパフォーマンスに影響する要因はいくつかあります。整数計算:
特定のターゲット ハードウェアでの浮動小数点および整数の計算のパフォーマンスを正確にテストするには、次の手順を使用します:
かつては整数計算は浮動小数点計算よりも大幅に高速でしたが、最新のハードウェアではその差は大幅に縮まりました。スーパースカラ アーキテクチャ、専用 FPU、効率的な浮動小数点ライブラリにより、浮動小数点演算の速度は整数演算と同等になりました。したがって、整数計算が本質的に高速であると仮定する前に、特定のハードウェアとワークロードを評価することが重要です。
以上が最新のハードウェアでは、整数計算は依然として浮動小数点計算より高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。