|
실제 상용 서버를 작성 할때 try/catch를 사용하지 않는곳은 거의 없습니다.
try/catch를 써서 성능이 딸리면 더 좋은 머신을 사는것을 권장합니다.
그냥 쓰시면 됩니다~
박정진.바보 님이 쓰신 글 :
: 여태 까지 try..catch...를 걸면 성능 저하를 가져 온다고 해서 사용을 자제 해왔었습니다.
:
: 네트웍 프로그램이라서 반응속도가 좀 느리면 안좋기 때문에 더욱 사용이 꺼려 지더군요.
: 우선 내부적으로 테스트를 하고서 문제가 없어서 실제 서버에 올려서 서비스를 하니까..
: 예외의 상황들이 발생하는거 같더군요.
:
: 그래서 오늘 한번 얼마나 성능의 저하가 있을까...하고 초무식간단하게 시간 테스트를 해봤습니다.
: 우선 try...catch...를 배제한 코드와..
: float a;
: a = 129832789324;
: long ttime;
: ttime = GetTickCount();
: for(int i=0;i<1000000;i++)
: {
: a = a + 1000;
: a = a / 3324.12;
: a = a * 23.43;
: a = a / 3324.12;
: a = a * 23.43;
:
: a = a + 1000;
: a = a / 3324.12;
: a = a * 23.43;
: a = a / 3324.12;
: a = a * 23.43;
: }
: ttime = GetTickCount() - ttime;
: Memo1->Lines->Add(ttime);
: for문이 한번 돌때마다 try..catch..를 사용한 경우입니다.
: float a;
: a = 129832789324;
: long ttime;
: ttime = GetTickCount();
: for(int i=0;i<1000000;i++)
: {
: try
: {
: a = a + 1000;
: a = a / 3324.12;
: a = a * 23.43;
: a = a / 3324.12;
: a = a * 23.43;
:
: a = a + 1000;
: a = a / 3324.12;
: a = a * 23.43;
: a = a / 3324.12;
: a = a * 23.43;
: }catch(...)
: {
:
: }
: }
: ttime = GetTickCount() - ttime;
: Memo1->Lines->Add(ttime);
:
: 테스트 결과 try..catch...를 사용하지 안았을경우 평균 100ms
: 사용했을 경우에는 140ms나오더군요.
: 뭐 나누기 연산이 가장 부하가 많이 걸릴거 같아서 이따위로.(ㅠㅠ)
: 테스트를 해봤습니다. 백만번의 for문에서 40ms 차이라면 실제 성능에서는
: 별 차이가 없지 않을가요?
: 실제로 프로젝트에서는 아마 천번도 돌지 않을거 같습니다. for문 안에는주로
: 데이터를 send하는 부분이 들어 갈거구요.
:
: 과연 이만한 성능차이가 프로젝트에 영향을 끼칠까요?
|