티스토리 뷰

Java

[Java] if문 VS switch문

cherishee 2020. 8. 13. 14:42

if와 switch는 조거에 따라 처리하기 위해 사용된다. (java뿐만이 아니라 다른 언어에도 if와 switch는 있다.)
여태까지 동작구조에 대해서 생각하지않고, 수업시간에 "되도록이면 if문을 쓰세요"라는 교수님의 말씀에 if문을 더 많이 사용한 것 같다.
그래서 if문과 switch문의 동작구조와 어떤 것이 더 효율적인지 알아보려고한다.

if

Branch statement이다. 레지스터 2개 값 혹은 레지스터와 값 비교 후 특정 메모리 번지로 이동할지 결정한다.
따져야 하는 조건이 많을 수록 연산량이 늘어난다. if문을 작성할 때, 자주 사용하는 기능 순서대로 조건문을 작성하는 것이 성능 향상에 도움이 된다.

switch

Jump Statement이다. 따져야하는 조건이 많을 때와 사용자가 여러 기능을 유사한 빈도로 사용할 때 유리하다.
jump table 생성에 오버헤드 발생 가능성이 있다. (case의 개수가 4개 이하이면 jump table을 생성하지 않고, 그 이상일 때 생성한다.)
중간에 순차가 증가가아닌 경우에는 더 많은 메모리를 사용한다.
(ex1) case 1, case 2, case 3, case 4 -> 메모리크기: 4
(ex2) case 1, case 2, case 3, case 10 -> 메모리크기: 10

정리

조건이 4개 이하이면 if, 4개 이상이면 switch문을 사용하는 것이 유리하다.
하지만 switch문의 경우, jump table생성에 오버헤드 발생가능성이 있어서 메모리 사용량이 중요할 경우에는 if문을 사용하는 것이 낫다.

참고

'Java' 카테고리의 다른 글

[Java] 문자열의 모든 문자를 반복하는 가장 빠른 방법  (0) 2020.08.12
JAVA Collection 시간 복잡도  (0) 2020.08.06
[Java] char to int  (0) 2020.03.23
[Java] 객체 비교 (Comparator / Comparable)  (0) 2020.03.10
[Java] JVM  (0) 2020.03.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함