본문 바로가기

프로그래밍 기술 노트/기타 정보

Try-Catch 트릭 과 정석의 Cost비교

try catch 트릭이 실제 쓰는 말인지는 모르겠으나

 

try catch를

리스트나 벡터 순회등에서 사이즈 검사를 제외하고 무한루프를 돌린뒤 out of size 와 같은 에러가 나면 try catch 에 의하여 중지시키던가

TryParse 대신에  그냥 형변환때리고 try catch에 의하여 잡히면 parse 불가능과 같은식으로 사용 할 수 있다.

 

실제로는 Try-Catch는 스택 되감기때문에 Cost가 상당히 큰 작업이라 하지 않는데

뎁스가 낮고 리스트의 크기가 너무커서 Try-Catch 의 Cost가 무시할만 하게 작을때는 Try-Catch가 더 이득이지 않을까 하는 생각에

 

C++ 를 이용, 100000000 개의 사이즈를 가지는 벡터에서 시간을 측정해봤는데

디버그 모드에서 Try-Catch가 좀더 빠르게 나왔으나 릴리즈 모드에서는 컴파일러 최적화로 인해서 인지 사이즈 검사를 진행하는것이 좀더 빠르게 나왔다.

 

실험을 좀 야매로 진행해서 다른 자료구조, 다른방법이면 다르게 나올가능성이 아주 크기때문에.. 크게 신뢰할만 하지 않다.

 

다만 C#관련이긴하지만

 

https://stackoverflow.com/questions/2431836/pros-and-cons-of-trycatch-versus-tryparse

 

pros and cons of TryCatch versus TryParse

What are the pros and cons of using either of the following approaches to pulling out a double from an object? Beyond just personal preferences, issues I'm looking for feedback on include ease of

stackoverflow.com

https://stackoverflow.com/questions/2470494/try-catch-or-check-length

 

Try-Catch or Check Length?

I was just wondering which would be cheaper, using a try catch block for index out of bounds or checking the length of a multi dimensional array and comparing values? I have a feeling it's the len...

stackoverflow.com

등에 따르면 그냥 정석대로 하는것이 좋다고 한다. 뭐 당연한거겠지만..

728x90