2012-01-01 8 views
4

가능한 중복 :
Is it faster to count down than it is to count up?내림차순 루프가 오름차순 루프보다 효율적입니까?

내가 C++ for You++라는 C++ 책을 읽고 있었다. (I는 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으로 내려가는 것이 약간 더 효율적입니다.

이것이 사실입니까?

왜 루프가 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 비교를위한 전용 명령어가 있습니다. 따라서 엄밀히 말하자면, 프로세서가 내장 된 특별한 경우가 있기 때문에 더 빠를 것입니다.

+0

또한 컴파일러가 작성한 것과 같은 코드를 생성한다는 보장은 없습니다. –

관련 문제