C では、pow() の 2 乗または単純な乗算の効率を決定します。数値自体 (つまり、x*x*x) は、特定の考慮事項を考慮する必要があります。
pow(x, 3) と x*x*x の場合、C には pow(double, int) オーバーロードがないため、x*x*x の方が一般に高速です。 .
C では、 std::pow と x*x*x の効率が異なります。特定の指数に基づいて。指数が整数の場合、 std::pow(double, int) が呼び出され、結果として x*x*x と同様のパフォーマンスが得られます。
ただし、非整数の指数の場合、std::pow はより多くの値を使用します。複雑なアルゴリズムを使用しており、x*x*x よりも高速である可能性があります。
最近新しいコンパイラ (GCC 10、Clang 12 など) を使用したベンチマークでは、指数が 2 より大きい場合、一般的に x*x*x の方が高速であることが示されています。ただし、場合によっては、特に奇数の指数の場合、std::pow は同様またはそれ以上のパフォーマンスを発揮します。または、-ffast-math などの最適化が有効になっている場合。
ほとんどの実際的なシナリオでは、x*x*x は C の std::pow よりも効率的である可能性があります。 C では、特定の指数とコンパイラどちらの方法が速いかに影響する可能性があります。ただし、数学的安定性と最近のコンパイラでの潜在的なパフォーマンス上の利点のため、非整数の指数には pow() を使用することが一般的に推奨されます。
以上がstd::pow() は数値を単独で乗算するより効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。