if & switch
if
- 가장 위 if 구문부터 시작해 조건이 충족되는지 컨디션 체크
- 느린 속도
- if, else if 가 많아질수록 Assembly: CMP도 많아짐
- 범위 식도 체크 가능
switch
- 컴파일 할 때 점프테이블을 생성
- 점프 테이블 기반으로 어느 구문으로 갈 지 미리 알고 있음
- 빠른 속도
- case 개수에 따라 점프 테이블 사이즈가 커짐
- 점프하는 속도는 동일, 사이즈 무관
- 그래서 case 값은 read-only
- 점프 테이블 기반으로 어느 구문으로 갈 지 미리 알고 있음
- Finite State Machine
- OS이 없는 간단한 디바이스에서, 어떤 state에서 어떻게 작동할 지 구현
- state를 enum으로 정의하고, switch 구문 진입 전에 state를 정해주고 바로 해당 state로 점프
- switch는 정수를 판단할 수 있다 (u)int or char -> case ‘A’ -> read only