2012-03-20 5 views
0

모든 값이 부울이면 이진 &은 논리 &&보다 많은 비트로 작동합니까? 프로세서는 그것을 할 수 있습니다 :더 효율적입니다 : binary & or logical &&

if (foo == "Yes" & 2 != 0 & 6) 

또는

if (foo == "Yes" && 2 != 0 && 6) 

예를 들어

하면가 작동 얼마나 많은 비트

+1

언어에 따라 다릅니다. 네 진짜로 요. – SLaks

+0

@ SLaks 모든 언어에 대한 대답이 도움이 될 것입니다. – htoip

답변

4

는 무관하다 (특히 PHP를 생각하지만, 어떤 언어로 할 것) 어쨌든 하나의 명령으로 (보통). 결정적인 차이점은 바로 가기 기능이 &&이므로 오른쪽에있는 모든 것이 더 빠르지 않다는 것입니다. 즉, &&이 C 또는 Java와 같은 방식으로 작동하는 언어로 가정합니다. (그리고 분명히 PHP에 대해서는 확실하지는 않지만 알고 있습니다.)

반면에이 바로 가기가 필요로하는 브랜치는 속도를 늦출 수 있습니다. 그러나 요즘 컴파일러는 충분히 똑똑합니다. 저것을 낙관하기 위하여.

0

코드 논리에 따라 다릅니다.

0

는 이러한 연산자가있는 이유입니다, &는 논리적 & & & 경우 사용하고 & 논리적 때 &를 사용하는 것이 좋습니다. 때문에, 조기에 최적화하지 마십시오

  1. 응용 프로그램의 속도 당신은 응용 프로그램의 일부를 최적화 할 수 있으며 속도 증가의 관련성이없는 양을 이길

  2. 최적화없이 잘 될 수

  3. 코드가 더 복잡해지고 이후 버전에서 작업하기 어려울 것입니다.

  4. 속도와 관련하여 문제가있는 경우 아이디어와 관련이 없을 것입니다

  5. 프로그램은 때때로 그 자체로 매우 어렵고 해킹 이런 종류의, 당신의 코드와 팀의 전반적인 효율성을 이해하지 못할 팀 동료 때문에

  6. 당신이 쓴 추한 코드로 감소 될 것이다 읽을 코드를 만들 것입니다
+0

그래도 컴파일러가 보상 할 수없는 방식으로 '&&'_was_가 느리고 프로그램에서 병목 현상이 발생했다는 것을 보여 주었다면, 그것을 &로 대체하는 것이 좋습니다. 물론, 코멘트와 함께. – leftaroundabout