트러블 슈팅

If else vs Switch case 비교 분석

수달하나 2022. 11. 4. 20:48

개발 공부를 할 때 작은 프로젝트단위에서만 개발을 해서그런지 if else 문을 많이 사용하긴 했지만 switch case 문은 한 번도 사용해 본 적이 없었다. 굳이 사용을 할 필요성이 없었기 때문이다.

그러다 최근 실무에서 패킷 분석을 하던 도중 switch case 문이 많은 곳에서 사용된다는 것을 확인했고 문뜩 if else 문과 비교분석을 통해서 정리를 해봐야 겠다는 생각이 들었다.

 

우선 구글을 돌아다녀서 확인 한 결과 가장 많이 나온 얘기는 if else 와 switch case 둘 모두 전체 프로그래밍의 성능에 큰 차이가 없기 때문에 의미에 따라 사용하는것이 좋다는 것이다.

 

물론 switch case 를 통해서 나타낼 수 없는 경우에는 당연히 if else를 사용하겠지만 둘 모두의 문법에서 사용 가능한 경우에는 프로그래밍의 성능에는 차이가 없다 하더라도 실제로 다른 속도를 갖고 있는것은 사실이다.

 

어떤 부분에서 성능 차이가 발생 할 것인가에 대한 해답은 if 문과 switch 문의 동작원리에 담겨져 있는데 if문 같은 경우에는 branch statement 기반으로 몇 번째 분기에서의 판단, 이후 실행과 무시에 대한 부분이라면 swithc case 문 같은경우에는 jump statement 기반으로 특정 메모리 영역에 대한 접근이라는 것이다.

한 눈에 알아볼 수 있듯이 당연히 switch case 문이 더 빠른 실행을 보여주는데 단 상수에 대한 접근을 전제로 빠른 성능을 기대할 수 있다는 것이다.

 

위와 같은 동작의 차이 때문에 조건의 수가 다양하고 많을수록 switch case 문을 사용하는것이 유리하다 라는것이 일반적이고 설계 구조에 맞춰서 어떤 구문이 더 적합할 지는 개발자 스스로 찾아 가야 할 것이다.