C および C での二乗計算では pow(x, 2) または x * x の方が効率的ですか?

Barbara Streisand
リリース: 2024-11-11 10:17:03
オリジナル
988 人が閲覧しました

Is pow(x, 2) or x * x More Efficient for Squaring in C and C  ?

どれがより効率的ですか? pow を使用して 2 乗しますか?それとも単純に乗算しますか?

C では、一般に、pow には追加のオーバーヘッドを伴う関数呼び出しが含まれるため、2 乗に x * x を使用する方が pow(x, 2) を使用するよりも効率的です。 .

ただし、C では、コンパイラのおかげで両方のアプローチが効率的になる場合があります。最適化:

pow(x, 3) vs. x x x

C では、 pow(x, 3) と x * x * x は通常、効率の点で同等です。 C の std::pow 関数は、より一般的な形式 (pow(double, double)) をとり、指数を浮動小数点数として処理します。

具体的な考慮事項:

  • 最適化レベル: コンパイラーは次のいずれかを最適化できます。
  • 指数: 指数が大きくなるにつれて、整数指数用に最適化された実装により std::pow の効率が向上する可能性があります。
  • データ型: 整数の指数を使用して速度を最適化している場合は、手動で乗算します。 (例: x * x * x) のほうがより良い選択である可能性があります。

ここでは、GCC と Clang の最新のベンチマークを示し、さまざまな指数の効率をテストしています。

Exponent GCC (O3) Clang (O3)
2 x * x slightly faster Similar
3 x * x * x faster Similar
4 and above x * x * x * ... faster Similar

追加メモ:

  • C pow(double, double) は、関数のオーバーロードがないため、C の std::pow よりも効率が低くなります。
  • GCC で -ffast-math を使用すると、奇数の指数の std::pow を大幅に高速化できます。

以上がC および C での二乗計算では pow(x, 2) または x * x の方が効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート