1

x-1 を変数に計算してから使用する方が良いですか?

for ループと内部 (x-1) があります。for ループで何度も再計算するよりも、新しい変数 y=x-1 を作成してからループ内で y を使用するほうがよいでしょうか? 私は多くの減算を保存します。これが最適化であるかどうかわかりませんか?

4

3 に答える 3

5

コンパイラの機能を過小評価または過大評価しないでください。

最初にプロファイルします。

関数の最適化されたバージョンのアセンブリ言語リストを見てください。
コンパイラは、X-1を別の命令と組み合わせることができる場合があります。

最適化を行う前に、コードが完全に機能し、堅牢になるまで待ちます。多くの場合、コードを最適化するとデバッグが難しくなり、頻繁に使用されないコードの最適化に時間を浪費する可能性があります。

于 2012-07-14T00:14:16.990 に答える
3

ループ内で変更がない場合x、コンパイラはそれを最適化して1回だけ計算する可能性が高いため、問題にはなりません。(もちろん、xループ内で変更があった場合は、ループ内で再計算する必要があることは言うまでもありません)。

最適化の側面は別として、コードを書くことがおそらくより重要であるため、別のプログラマー(たとえば、コードを保守している人)にとって最も意味があります。ループ内で使用x-1することでコードがより明確になる場合は、そのように記述する方がほぼ確実に優れています。ループが全体的なパフォーマンスにとって非常に重要でない限り、(私の意見では)コードを読みやすくすることに焦点を当てたほうがよいでしょう。

于 2012-07-14T00:12:35.193 に答える
-1

はい、それはあなたのコードをスピードアップするのに役立ちます。実行する必要のある計算の数を減らすと、特にループが何度も繰り返される場合に、コードの速度が上がります。

あなたが一度だけそれをすることができれば、何度も何度も何かをする必要はありません:)

xただし、これはループ中に変更されないことを前提としています。変更された場合は、ループを通過するたびに異なるxため、再計算する必要があります。y

于 2012-07-14T00:13:10.587 に答える