JS는 컴파일러? 인터프리터?

정승렬·2023년 4월 6일
0

기술면접

목록 보기
15/38

compiler(컴파일러)

파일 전체를 읽은 뒤 코드의 의미를 해석하고 파일 전체를 기계어로 변환 한다.(컴파일)

인터프리터

코드를 한줄 한줄 읽어 내려가며 한줄씩 중간 단계의 ByteCode로 변환한다(인터프리팅)

자바스크립트는 기본적으로 인터프리터 언어이다

But, Chrome V8 엔진이 나온 뒤론

실행되는 플랫폼에 따라 인터프리팅과 컴파일이 혼합되어 사용 된다.

V8 엔진 작동 원리

  1. 먼저 엔진이 실행할 JS 파일을 받게 된다.
  2. 파싱, AST(Abstract Syntax Tree)를 구축하는 과정을 거친다.
  3. Interpreter가 코드를 읽으며 실행한다.
  4. 코드를 수행하는 과정에서 프로파일러가 지켜보며 최적화 할 수 있는 코드를 컴파일러에게 전달해준다.
    주로 반복해서 실행되는 코드 블록을 컴파일(최적화)한다.
  5. 원래 있던 코드와 최적화된 코드를 바꿔준다.

코드를 우선 인터프리터 방식으로 실행하고 필요할 때 컴파일 하는 방법을 JIT(Just-In-Time) 컴파일러 라고 부른다.
크롬의 V8 엔진을 포함해 Mozilla의 Rhino, Firefox의 SpiderMonkey도 같은 방법을 사용한다.

0개의 댓글