msvc로만 테스트 해봤는데,
case를 오름차순이나 내림차순으로 정렬 안하고 섞어놓아도, 오름차순으로 정렬해주고
case 중간 중간 빼놓아도 룩업테이블 만들어서 한 번에 해당 case로 점프하네 ㄷㄷ
여러가지 조건으로 테스트 해봤는데, 다 만들어줌 ㄷㄷ...
유일하게 안만드는 조건이 case가 6개인가 5개 미만이면 룩업테이블 없이 일일이 비교하는 방식으로 하네
그런데, 코드 봐도 이해가 안되었던게, 룩업테이블을 만드는데, case가 1,2,4,5,6,7 일케되어있으면 3이 없어도 잘 만들더라 -_-?
비교 자체는 룩업테이블 크기랑 비교하던데 어떻게 저게 가능한건지 모르겟다.
아 알아냈다 ㅋㅋ 여기 설명 잘되어있네
https://www.codeproject.com/Articles/100473/Something-You-May-Not-Know-About-the-Switch-Statem
댓글에 default 있으면 룩업테이블 안만든다는 것이 있는데, 다른 컴파일러는 확인하기 귀찮고...
msvc는 만들어줌. 세 번째 ja 명령어로 default문으로 보내버림
이쁘게 정리를 해서 올리고 싶은데, 먼가 잘 안되네 귀찮으니 넘어가자...
default 만들면 룩업 못맹그는 걸로 앎
default해도 룩업 만들어줌
룩업테이블이랑 비교해서 case에 해당하는 값이 룩업테이블에서 벗어나면 디폴트로 보내버리는 코드가 있음
그르게 지금 해보구있는데 그러네 5개까지는 if한다야
5개 미만은 if-else가 빠르나보구만
거의 뭐 또이또이한가봄
룩업테이블을 이용하기 위한 추가 명령어가 좀 있더라고
Label as value 쓰면 명시적으로 사용 인데 스위치가 더 나은덧 - dc App
왠만하면 대부분 컴파일러가 룩업테이블로 최적화해줌. switch 뿐만이 아니라 if else 도 특정 갯수가 넘어가면 룩업테이블로 자동으로 바꿔버림
오 if-else도? 컴파일러 ㄷ_ㄷ