우리 모두단락 곱셈과 같은 것이 있습니까?
if (False AND myFunc(a)) then
...
가 if
조건이 참이 될 수있는 방법이 없기 때문에 myFunc()
실행을 방해하지 않는 즉, 논리적 표현에 대한 단락을 알고있다.
result = C*x/y + z
가 C=0
경우 첫 번째 항을 평가하는 의미가 없습니다 말한다. x
과 y
이 스칼라라면 성능면에서별로 중요하지 않겠지 만 우리가 큰 행렬이고 조작이 비용이 많이 들며 행렬에 적용될 수 있다면 분명히 차이를 만들 것입니다. 물론 if C!=0
문을 써서 극단적 인 경우를 피할 수 있습니다.
제 질문은 그런 기능이 있는지 여부와 유용한 지 여부입니다. 나는 프로그래머가별로 없기 때문에 아마도 나는 어떤 이름 아래서 만난 적이 없다. 그렇다면 나에게 계발하십시오 :)
논리 단락이 기능의 관점에서 중요한 개념이다 기능적 차이가없는 컴파일러 레벨에서의 최적화. 당신이 선택한 언어는 당신이 눈치 채지 않고도 이미 그것을 할 수 있습니다. – deceze
나보다 더 잘 아는 사람은 대답해야하지만, 부서를 단락 시키면 문제가 생길 것이라고 상상해보십시오. 예를 들어, y = 0 일 경우 어떻게됩니까? 누전이 발생하면 실제로 오류 일 때 0을 반환합니다. – Nate
@deceze 산술적 인 단락은 논리적 인 단락과 마찬가지로 최적화를 넘어 기능적으로 차이가있을 수 있습니다. 'result = C * myfunction()'을 고려하십시오. 산술 표현을 단락 시키게하는'C == 0'이라면,'myfunction'은 절대로 호출되지 않으며 부작용이 발생하지 않습니다 (논리적 인 단락과 마찬가지로). –