2012-01-01 7 views
4

可能性の重複:私はC++の本を読んでいた
Is it faster to count down than it is to count up?降順ループは昇順ループより効率的ですか?

C++ for You++と呼ばれます。 (私は1998年版を持っている。)

をモンテカルロ法についての章では定積分を計算するために使用されるコードのスニペットがあります:

for(n = nPoints; n > 0; n--) {     // A loop that goes down to 
    x = a + double(rand()) * ((b-a)/RAND_MAX); // 0 is slightly more efficient. 
    y = ... 
    ... // if (y <= f(x)) increment count 
    ... 
} 

私の質問ではなくコメントについては、コードに関するものではありません。

ループが0になるのはやや効率的です。

これは本当ですか?

ループがゼロになるのは、なぜ昇順ループより効率が良いのですか?

n、ループカウンタは、ループでも使用されていません!

これもやはり押しつける質問ではありません。私は単に興味があります。自分のプログラムを少し効率的にする方法を見つけたかもしれません!

+1

http://stackoverflow.com/questions/2823043/is-it-faster-to-count-down-than-it-is-to-count-up – Mysticial

+0

ありがとうございます!ワオ。私はそれを見ていなかった。私は、私の質問を重複として閉じなければならないのですか? – eboix

+2

心配しないで、私たちはあなたのためにそれを行います。しかし、大きな質問。 :) +1 – Mysticial

答えて

6

私は、現在のプロセッサでは、その効果が極めて無視できると考えています。しかし、プロセッサは、論理的には変数との比較より高速で、レジスタを節約する可能性がある、ゼロとの比較のための専用の命令を持っていることに注意することは重要です。したがって、厳密に言えば、プロセッサには専用の特殊ケースが内蔵されているため、処理速度が向上します。

+0

また、コンパイラがあなたが書いたようなコードを生成するという保証はありません。 –

関連する問題