2013-03-22 2 views
2

예외 처리에서 오버 헤드 비용이 발생합니다 (이해함) .... 그리고 IF 문/분기가 느린 코드를 유발할 수 있음을 고맙게 생각합니다. 그러나 프로그램이 99.9 %의 시간 동안 올바르게 실행된다고 가정하면 분기 예측기는 대부분의 시간을 정확하게 추측 할 것이며 프로그램 전체에서 예외 처리 오버 헤드가 필요하지 않을 것입니다 ...예외 처리보다는 IF 문을 사용하는 것이 저렴합니까?

그러므로 성능에 중요한 응용 프로그램에서는 오류를 탐지하기위한 전통적인 예외 처리보다는 IF 문을 사용하는 것이 더 낫습니다.

+1

[C++ 예외 처리의 추가 공간 크기] (http://stackoverflow.com/questions/691168/how-much-footprint-does-c-exception-handling-add)를 참조하십시오. 오버 헤드가 없을 때 예외는 if 문과 함께 발생하는 반면에 발생합니다. – ipc

+0

@ipc하지만 예외 처리를 위해 런타임 시스템이 더 많은 정보를 추적해야한다는 점을 이해했습니다. 예외가 있습니다 ...? 그렇기 때문에 예외 처리 기능없이 컴파일 할 수있는 옵션이 있습니까? – user997112

+0

예, '프로그램이 정상적으로 99.9 % 실행된다고 가정 할 때'이것은 문제가되지 않습니다. 어쨌든 예외는 거의 사용하지 않아야합니다. – ipc

답변

6

일반적으로 예외 처리를 구현하면 if 문이 실행되는 것보다 (실행 속도면에서) 오버 헤드가 더 많이 발생하지 않으며 조금 더 추가 될 수도 있습니다. 합리적으로 사용하면 코드 혼란을 줄여 가독성을 높일 수 있습니다.

IOW, 전혀 이해할 수없는 코드의 경우 보통 은 매우으로 약간 하강입니다. 주된 잠재적 인 단점은 더 큰 실행 파일과 런타임 지원에 대한 요구 사항이므로 장치 드라이버 (적어도 정상적으로는)와 같은 것들에는 적합하지 않습니다.

관련 문제