JIT 컴파일러
728x90
  • 컴파일러 vs 인터프리터
    • ??차이는??
    • 컴파일러
      • 소스코드 -> 머신코드 -> 프로그램 실행
        • 소스코드 -> 머신코드 : 전처리(preprocessing)
        • 머신코드 -> 프로그램 실행 : 처리(processing)
    • 인터프리터
      • 소스코드 -> 프로그램 실행
        • processing만 존재
    • 컴파일러는 한 번에 머신 코드로 실행되고 바이너리 파일로 쓰여진다. 컴파일 이후에 실행이 가능하다.
    • 인터프리터는 한줄씩 소스 코드를 읽으면서 실행하고 컴파일러에 비해 속도가 느리다. 변경 사항을 빠르게 테스트할 수 있다.

js는 인터프리터 언어인가??

    • 맞긴하다!
      • 하지만 chrome v8 engine이 나온 이후로는 컴파일도 같이 진행한다.
      • why? 성능 최적화를 하기 위함!

JIT(Just-In-Time) 컴파일러

인터프리터는 소스코드 -> 프로그램 실행

JIT 컴파일러는

소스코드 -> 머신코드 -> 프로그램 실행

  • 소스코드 -> 머신코드 : 컴파일(preprocessing)
  • 머신코드 -> 프로그램 실행 : 즉시 처리(processing)

머신코드에서 즉시 처리하여 프로그램을 실행한다.

  • JIT

js 엔진에서

소스코드 -> 파싱

AST(abstract syntax tree, AST) 로 파싱한다.

파싱 -> 컴파일

AST -> 머신코드

컴파일 -> 실행

컴파일 -> 실행 -> 최적화 -> 컴파일

참고 : https://curryyou.tistory.com/237

 
728x90
반응형