1

내가 아는 그 소스 코드를 컴파일 할 때, 컴파일러 취급 if/elseif/else 다르게 효율적으로 적어도 스위치 문을 switch 문 해당 if/elseis/else 및 가장 효율적입니다. 이는 일반적으로 런타임에 활용되는 컴파일 타임에 점프 테이블을 작성하여 수행됩니다. 그러나 해석 된 언어 (컴파일되지 않음)의 경우 switch 문을 사용할 때 상당한 효율성 향상이 있습니까? 확실히 통역사는 switch 문장의 효율성을 높이기 위해 점프 테이블을 미리 만들 수 없습니다.만약 해석 언어/그렇지 및 전환 효율을 비교

통역이 if/elseif/else 문 해당 세트에 비해 switch 문의 효율성을 증가시키는 방법으로 switch 문을 처리합니까?

답변

1

내 생각에 인터프리터 언어에서 switch 문을 사용할 때의 효율성 이점은 컴파일 된 언어보다 훨씬 작습니다. 내가 생각할 수있는 유일한 실제 이점은 switch 문에서 피연산자 (다른 '사례'와 비교되는 피연산자)는 한 번만 평가되고 즉시 등록부에 보관되며 이는 변경되지 않습니다 if 문은 잠재적으로 그 비트를 놓칠 수 있고 모든 if 절에 대한 피연산자를 (비용이 메모리에서 읽는 것 일지라도) 재평가 할 수있는 반면, 다른 '사례'와 비교 만합니다.

또한 가독성에 대해서도 고려해야합니다. 대부분의 경우이 성능 차이는 매우 미미하므로 코드를 더 읽기 쉽고 이해하기 쉽게 만드는 옵션을 선택해야합니다.