0

変数を宣言するとすぐに、それを操作し始めます。私の質問は、それが重要であるとしても、操作の速度についてです。配列内のすべての値の合計である
変数があるとします。totalあなたはあなたがするように平均を見つけたいですtotal / length。新しい値を宣言する方が速いですか(つまりdouble avg = total / length)、またはすべてを「インプレース」で行う方が速いですか( )、これはもちろん、平均的に貧弱な変数名であるtotal \= lengthという事実を無視することによって行われますが、これは単にtotal私の主張を理解する

プロセッサがALUで計算を行うために、またはビットシフトを介してCPUでハードワイヤード計算を行うために、RAMからデータをコピーする必要があると思われますが、C ++がメモリをどのように処理するかはよくわかりません。また、それがどのように機能するかについて興味があります。バックエンドで。

4

3 に答える 3

2

あなたが意味していると仮定するとtotal /= length、それが重要な場合にのみ違いがわかります(つまり、実際にとの両方を使用する必要がtotalあるavg場合、とにかく2番目のバージョンを使用できませんでした)。

平均になり、意味的に正しくtotal /= lengthなくなったため、使用することに反対しています。total

于 2012-09-17T12:50:23.707 に答える
2

これは、平均を使用する頻度によって異なります。数回しか使用されない場合は無視できますが、平均で数百回または数千回使用する必要がある場合は、常に計​​算を行う必要がないため、変数を使用する方が「高速」である可能性があります。ただし、今日のコンパイラは最適化に関しては非常に優れているため、実際には問題にはならないでしょう。

確実に知る唯一のことは、それをテストし、いくつかのプロファイリングと測定を行うことです。手動による最適化について考える前に、常に行う必要のあること(平均の計算、またはさらに複雑なことはボトルネックになるとは思えません)。

于 2012-09-17T12:55:43.350 に答える
1

これは、最適化をオンにした後のコンパイラの動作によって異なります。

于 2012-09-17T12:47:52.693 に答える