Dev-diary/일상

if문과 switch문의 성능 차이 ? 둘 중에 뭘 써야 하나

ciocio 2021. 9. 2. 12:49

며칠 전 stack 자료 구조를 자바스크립트로 구현하다 깨달은 사실이 몇 가지 있어 글을 남기려 한다.

ISA 관점 에서 ... 봤을 때, (궁금증 1) MIPS 에는 (궁금증 2) branch statement jump statement 가 있다고 한다.

branch statement는 레지스터 2개를 비교해서 (혹은 레지스터 and 상수 비교) 특정 메모리 번지로 이동하냐 마냐를 결정한다.

jump statement는 (비교 없이) 즉시 !! 특정 메모리 번지로 이동한다.

 

if문은 branch statement에 기반을 두고 있고,

switch은 jump statement에 기반을 두고 있다.

 

if문은 조건이 만족하면 실행, 만족하지 않으면 무시한다. (실행 할거여 말거여?)

switch문은 입력된 값을 보고 그 값에 해당하는 문이 있는 곳에 가서 실행한다. (어떤 거 실행할거여?)

 

if문은,

각 조건을 만날 때마다 해당 조건을 처리할 수 있게끔 레지스터를 변경해주는 인스트럭션들이 먼저 선행되어야한다.

-->  딱 봐도 오래 걸릴 것 같은 ...

점프 테이블을 만드는 오버헤드는 없지만 !! 따져야 할 조건의 수가 적을 경우에 사용하는 것이 유리하다.

 

switch문은,

switch문 시작할 때 입력받은 값이 어떤 건지 확인하는 인스트럭션만 있기 때문에 상대적으로 빠르다.

하지만 점프 테이블을 만드는 오버헤드가 있기 때문에 따져야 할 조건의 수가 많을 경우에 사용하는 것이 유리하다.

 

 

반응형