x-1 を変数に計算してから使用する方が良いですか?
for ループと内部 (x-1) があります。for ループで何度も再計算するよりも、新しい変数 y=x-1 を作成してからループ内で y を使用するほうがよいでしょうか? 私は多くの減算を保存します。これが最適化であるかどうかわかりませんか?
x-1 を変数に計算してから使用する方が良いですか?
for ループと内部 (x-1) があります。for ループで何度も再計算するよりも、新しい変数 y=x-1 を作成してからループ内で y を使用するほうがよいでしょうか? 私は多くの減算を保存します。これが最適化であるかどうかわかりませんか?
コンパイラの機能を過小評価または過大評価しないでください。
最初にプロファイルします。
関数の最適化されたバージョンのアセンブリ言語リストを見てください。
コンパイラは、X-1を別の命令と組み合わせることができる場合があります。
最適化を行う前に、コードが完全に機能し、堅牢になるまで待ちます。多くの場合、コードを最適化するとデバッグが難しくなり、頻繁に使用されないコードの最適化に時間を浪費する可能性があります。
ループ内で変更がない場合x
、コンパイラはそれを最適化して1回だけ計算する可能性が高いため、問題にはなりません。(もちろん、x
ループ内で変更があった場合は、ループ内で再計算する必要があることは言うまでもありません)。
最適化の側面は別として、コードを書くことがおそらくより重要であるため、別のプログラマー(たとえば、コードを保守している人)にとって最も意味があります。ループ内で使用x-1
することでコードがより明確になる場合は、そのように記述する方がほぼ確実に優れています。ループが全体的なパフォーマンスにとって非常に重要でない限り、(私の意見では)コードを読みやすくすることに焦点を当てたほうがよいでしょう。
はい、それはあなたのコードをスピードアップするのに役立ちます。実行する必要のある計算の数を減らすと、特にループが何度も繰り返される場合に、コードの速度が上がります。
あなたが一度だけそれをすることができれば、何度も何度も何かをする必要はありません:)
x
ただし、これはループ中に変更されないことを前提としています。変更された場合は、ループを通過するたびに異なるx
ため、再計算する必要があります。y