2010-06-30 4 views
6

저는 Delphi와 협력 중입니다. if condition을 다른 방법으로 작성하면 성능에 어떤 차이가 있습니까? 예를 들어 :시작 블록이 조건문의 성능에 영향을 줍니까?

if (condition) then 
    someVar := someVal 
else 
    someVar := someOtherVal; 

아니면 쓸 수 있습니다 : 그것은 첫 번째보다 더 보이는해서

if (condition) then begin 
    someVar := someVal; 
end else begin 
    someVar := someOtherVal; 
end; 

내가 두 번째 옵션을 선호합니다.

+10

"end else begin"은 오브젝트 파스칼 스타일 가이드에 따라 올바르지 않은 것으로 간주됩니다. http://edn.embarcadero.com/article/10280#8.2.3 –

+0

실적이 우려되는 경우 다음을 고려하십시오. http://stackoverflow.com/questions/2679186/most-hazardous-performance-bottleneck-misconceptions/2679514 # 2679514 –

+9

@Chris : 스타일 가이드의 좋은 예이지만 모든 코드 레이아웃이 좋지는 않습니다. 한 줄의 스타일에서 끝을 사용하는 좋은 가독성 주장이 있습니다. 관심이 있다면 링크를 찾을 수 있습니다. 그리고 스타일 가이드가 실제로 올바른 용어와 부정확 한 용어를 사용한다는 것을 알고 있지만, 처음부터이 용어를 사용해서는 안되는 완전히 주관적인 문제입니다. –

답변

21

아니요, 성능에는 차이가 없으므로 작성된 코드는 동일합니다.

두 번째 옵션보다 더 중요 할 수있는 부분은 유지 관리를 위해 더 좋습니다. else 블록에 다른 명령문을 추가해야하는 경우 우발적으로 begin 및 end를 추가하는 것을 잊지 않고 명령문을 if의 바깥에 놓고 항상 실행합니다.

+0

좋은 점 ... +1 – Himadri

+1

+1 정비 팁. –

+2

들여 쓰기를 올바르게 사용하고 무엇을하고 있는지 알고 있다면 어떻게 실수로 "시작과 끝을 추가하는 것을 잊어 버릴 수 있습니까?" 나는 잠에서'시작'과'끝'을 놓칠 수있었습니다! –

3

성능의 차이는 없습니다.

beginend 코드의 시작과 마감 블록,하지만 계산이 수행 될 필요가 컴파일러에게.

1

if-elseif-else에 관해 알아 두어야 할 점은 가장 일반적인 조건을 평가할 수 있도록 가장자리 사례보다 먼저 코드에서 일반적인 사례를 유지하는 것입니다.

+0

정말이 질문을 읽어 주시겠습니까? –

+0

예, 성능 문제에 도움이 될 수 있습니다 ... -1을 얻지 않아야합니다. – Himadri

+0

답변이 수정되었습니다. 서버가 나에게 허락한다면 나는 -1을 제거 할 것이다 ... –

1

시작과 종료는 다른 사람들이 이미 말한 것처럼 코드 속도를 늦추지 않습니다. 나는 항상 당신이 그것을 사용할 수있을 때마다 항상 시작과 끝을 사용하도록 더 명확하게 당신을 격려하기 위해 또 다른 대답을 쓰고있다.

Begin and End를 사용하면 진보적이며, 느리게하기 때문에 걱정하지 않아도됩니다.

다른 방법으로 가면 어디에서나 시작과 끝내기를 생략하면 다른 유형의 문제가 발생합니다.

이것은 나에게 많이 일어났습니다. begin 문과 end 문이없는 곳에 행을 삽입하면 문제가 발생할 수 있습니다. 그런 다음 코드를 위반 한 것에 대해 궁금해 할 정도로 머리를 긁적 거리게됩니다. 필요한 곳이 아닌 곳이라하더라도 모든 곳의 시작 부분은 많은 델파이 코더의 표준 작동 절차입니다.

+1

필자는 필연적으로'begin ... end'을 사용하지 않는다. 이렇게하면 코드를 훨씬 쉽게 읽을 수 있습니다. 나는 버그가 없으며 머리가 긁히거나 문제가 발생하지 않는다. 필자는 경험 많은 델파이 개발자가 불필요한 '끝 ...'을 건너 뛰지 않을 이유가 없음을 알 수 있습니다. 코드를 정확하게 들여 쓰기 만하고 "dangling else"현상을 알고 있다면 아무 것도 잘못 될 수 없습니다. (필자는 12 세 때부터 Delphi에서 개발했기 때문에 본능적으로 알고 있습니다.) –

+3

필자는 경험 많은 Delphi 개발자가 불필요한 시작을 사용할 수있는 이유 중 하나 이상을 볼 수 있습니다. end : 그는 다음과 같은 동료가있을 수 있습니다. 경험. (그 외에도 : 나는 꽤 경험이 많은 것으로 생각하고 실제로 자주 사용합니다. 아마도 어쩌면 당신의 진술이 틀렸을 수도 있고 그렇지 않을 수도 있습니다.) – dummzeuch

+0

읽을 수있는 사람이 볼 수 있듯이 사람들은 동의하지 않습니다. 그 문제는 매우 작고 마지막 의미는 거의 없습니다. dangling-else가 발생할 때 문제를 해결하는 방법을 배우고 코드를 작성할 때 가장 잘 생각하는 것을해야합니다. 개발자 팀과 함께 일하면 잘하면 모두 합의에 도달 할 수 있습니다. –

관련 문제