보통 try .. catch 가 느리다고 주장할 때는 예외를 던지고 받는 일련의 과정의 비용이 크다고 이야기한다
그러나 제대로 비교하려면 예외를 사용하지 않고 전통적인 방식으로 오류 처리를 했을 때와 비교해야지
즉 함수 하나 하나 호출할 때마다 반환 값 확인해서 오류인지 아닌지 확인하는 코드와 성능을 비교해야 한다는 거다
심지어 printf도 실패할 우려가 있다. if (printf(..) == 오류) 해야 한다는 말
다들 알다시피 if 문은 비용이 비싸다. 분기 예측으로 커버는 되지만 이 역시 실패했을 때 손해가 어마어마하지
그런데 try .. catch 한 개로 if 문 수십 개를 없앨 수 있는 거다. 속도가 더 빠를 수밖에 없다
if 문은 프로그램 속도를 전체적으로 갉아 먹고, try .. catch 는 평소에 빠르다가 가끔 예외 터질 때만 크게 느려지는 거지
따라서 오류 발생 확률이 낮다면 try .. catch 를 쓰는 쪽이 더 빠르다
어떻게 보면 CPU 파이프라인과 발상이 비슷하지. 일반적인 상황에서 더 빠른 대가로 가끔 큰 비용을 치르는 것이다
옹...이런식으로도 볼수있네
ㄱㅂㅍㄹㅅ
흠...메모 - dc App
아조씨 만갤좀 그만하고 여기에 이런 글좀 자주 써주세요
만갤 별로 안 함. 개념글 보면서 댓글 다는 게 전부
저번에 만갤 개념글 댓글창 쭉 내려보다가 님 닉이 딱 보이길래 ㅋㅋㅋㅋ
속도가 문제가 아니라 추상화 방식 자체가 잘못됨. if도 if가 나쁜게 아니라 if가 하나의 소스에서 로직, 계산, 플로우, 검사, 예외 모든걸 동일한 방식으로 컨트롤하고 뒤섞는 코딩이 나쁜거지.
미세한 구문 속도로 장단점 찾는 시대는 끝난지 오래임. 추상화예측카능성으로 따짐
흠. 근래에 나온 언어들에서 예외를 어떻게 처리하는 추세를 보면 될터인데