try catch 와 비용문제

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
killrain
Posts: 37
Joined: 2002-09-21 22:46
Location: n모사
Contact:

try catch 와 비용문제

Post by killrain »

그동안 try catch 를 정말 편하게 써왔는데,,
여기저기에 try catch 를 게임에쓰기엔 비용이 좀 많이드는 놈이라
아예 안쓰는것이 좋다는 글이 많은것 같네요.
그런데 어디에서 비용이 많이 드는지 시원히 설명해주는 글을 찾지 못했습니다;

질문1) try catch 문을 쓰면 함수에 try-catch 처리를 위한 명령어가 추가되는건가요? 그래서 비용이 많이 든다는 건가요?
질문2) 그렇다면 try 를 한군데서라도 쓰는순간 모든 모든함수에 명령어가 추가되서( throw() 로 제낀거빼고 )
모든 함수가 느려지나요?


이렇게 하는게 제대로 테스트 해보는건지 모르겠지만;;
그다지 차이가 나지 않더군요;;(차이가 없다기보단,,타이머가 부정확한건지 매번 편차가 조금 심해서;)

Code: Select all

#pragma comment (lib,"winmm.lib")

#include <iostream.h>
#include <windows.h>

//#define TRY

void print()
{
}

int main ()
{
	DWORD start = timeGetTime();

#ifdef TRY
	try
	{
#endif
		for( int i=0; i<10000000; i++)
			print();
#ifdef TRY
	}
	catch (char *e)
	{
	}
#endif

	DWORD end = timeGetTime();
	cout << end-start <<endl;

	return 0;
}
킬레인네 : http://killrain.net ㅡ,.ㅡV
qubee

제가 알기론

Post by qubee »

effective c++ 에서 본 내용인데..

평균적으로 5% 인가? 느려진다고 하더군요.

그런데 로직 전체를 try 로 감싸지 않는이상..

딱 필요한 부분에서 try 하고 그러면

속도 저하가 훨씬 줄어들겠죠.

그 책에서도 그런 방법을 추천 하더군요.
verena
Posts: 136
Joined: 2003-09-04 16:36

Re: try catch 와 비용문제

Post by verena »

컴파일러 혹은 exception handling library가 try catch를 어떻게 구현하느냐에 따라 성능이 달라지겠죠.

보통 예외를 던지는 경우 인터럽트등을 사용하는 경우가 있겠습니다. 그래서 예외가 던져지지 않는 정상적인
경우에선 try catch가 없는 경우하고 속도는 같다고 보시면 됩니다. 그런데 if와 같은 코드들이 빠지기 때문에
오히려 try catch를 사용하지 않는 예외핸들링이 들어가는 코드보다 속도나 성능이 더 뛰어난 경우가 많답니다.
Locked