2010-02-07 5 views
2

루프에서이 문제가 발생합니까?

while(x < 100) { 
if(x == 1) { echo "Hello World!" } else { echo "Bottles" } 
x++; 
} 

같은 큰 루프를 가진 경우

while(x < 100) { 
if(x != 1) { echo "Bottles" } else { echo "Hello World!"} 
x++; 
} 

그것이 정말 차이를 만들 것 B?

+0

나는 어떤 차이도 볼 수 없으며, 각각 100 루프와 1 조건 체크가 될 것입니다! – Kubi

+0

이것이 단순한 예라고 가정합니다. 왜냐하면이 코드가 실제 코드인지 분명하게 알기 때문에 루프 밖에서 if를 이동해야합니다. 에코 "hello world", 99 병. –

답변

2

아마도 차이는 없습니다. 더 자주로

나는, 두 번째로 가고 싶어 그 x != 1가있을 것보다 그 x == 1이 아마 슈퍼 작은-1 천분 --A-밀리 세컨드의 성능 향상으로 변환

, 그러나 마이크로 최적화는 그다지 중요하지 않습니다.

+4

나는 가독성을 위해 실제로 첫 번째 것과 함께 갈 것입니다. 부정적인 조건을 사용하면 많이 가지고있는 경우 혼란 스러울 수 있습니다. –

2

차이점을 발견 할 가능성은 거의 없으며 걱정할 큰 병목 현상이 거의 확실합니다.

1

일반적인 CPU의 경우 분기 예측이 A로 인해 엉망이 될 수 있으므로 B가 더 빠를 것입니다. 물론 컴파일러가 최적화되지 않는다고 가정하십시오.

btw, 측정 했습니까?

+0

이것은 CPU 분기 예측이 요인이 아닌 php입니다. –

+0

이것은 단지 이론적 인 것입니다. 우리가 측정하지 않는 한 어떤 것이 더 빠를 것인지 결코 말할 수 없습니다. 그렇더라도 우리는 여전히 확신 할 수 없습니다. 그리고 분기 예측자가 무엇을 할 것인지를 예측하는 것은 어렵습니다 :-) –

0

x가 1에서 시작한다고 가정합니다. 그렇지 않은 경우 반드시 가능할 수는 없습니다.

echo "Hello, World!"; 
while(x < 99) { echo "bottles"; x++; } 

왜 조건을 사용하면 좋을지 알고 있습니다.

+0

코드 어설 션 x는 시작시 1입니다. 이건 어때? (x <1) {echo "bottles"; x ++; } if (x ++ == 1) echo "Hello, World!"; (x <100) {echo "bottles"; x ++; } –

0

옵티마이 저가 루프와 어떤 관련이 있는지에 따라 다릅니다.

관련 문제