最新のハードウェアでの浮動小数点計算と整数計算: 速度の比較
パフォーマンス重視のプログラミングの世界では、整数計算は浮動小数点計算は本質的に浮動小数点計算よりも高速であると、長い間広く信じられてきました。しかし、今日の CPU は飛躍的に強力になっていますが、この仮定は依然として有効でしょうか?
整数至上主義の神話と現実
整数の計算 (多くの場合、整数を含む演算に関連付けられます) 、初期のコンピュータ設計には浮動小数点コプロセッサがなかったため、伝統的に高速であると考えられていました。ただし、最新の CPU は高度に最適化された浮動小数点実行ユニットとキャッシュを備えているため、速度の差は無視できます。
正確な評価のためのベンチマーク
この主張を検証するには、さまざまなベンチマークを使用します。研究が行われてきました。提供された応答に示されているようなベンチマークの 1 つは、mygettime() 関数を使用して実行時間を測定する整数と浮動小数点の加算/減算および乗算/除算のパフォーマンスを比較します。結果は啓発的でした:
現代建築に関する結果
Processor | ALU/FPU Operation | Time (microseconds) |
---|---|---|
Intel Xeon X5550 | Integer add/sub | 1.005460 |
Intel Xeon X5550 | Integer mul/div | 3.926543 |
Intel Xeon X5550 | Float add/sub | 0.993583 |
Intel Xeon X5550 | Float mul/div | 1.821565 |
ベンチマークが示すように、最新の Intel アーキテクチャでは、浮動小数点演算は整数演算と同等か、わずかに高速です。興味深いことに、この結果は、整数の乗算と除算が他の演算よりも大幅に遅いことを示しています。
速度に影響を与える要因
ハードウェア アーキテクチャ、コンパイラの最適化、および命令の依存関係はすべて、操作の速度に影響を与える可能性があります。複数の命令を同時に実行できるパイプライン設計では、コアごとに利用可能な ALU と FPU の数が並列演算の実行において重要な役割を果たします。
正しいアプローチの選択
浮動小数点計算と整数計算の正確な速度は特定の要因によって異なる場合がありますが、整数の優位性が仮定されていることは明らかです。時代遅れです。整数演算と浮動小数点演算のどちらを選択するかは、問題の固有の性質と精度の要件に基づいて選択する必要があります。
高い精度が要求される数値計算の場合は、整数演算が引き続き適している一方で、浮動小数点演算が推奨されます。整数ベースの問題や、精度がそれほど重要ではない状況の場合。
以上が最新の CPU では整数計算は浮動小数点計算よりも高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。