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 -> 머신코드
컴파일 -> 실행
컴파일 -> 실행 -> 최적화 -> 컴파일
728x90
반응형
'프로그래밍 언어 > javascript' 카테고리의 다른 글
호이스팅, 스코프 (0) | 2023.08.14 |
---|---|
실행 컨텍스트 (0) | 2023.08.14 |
javascript 특징 (0) | 2023.08.14 |
javascript engine과 runtime (0) | 2023.08.14 |
javascript(자바스크립트) 기초, 개발 환경 구축, 기초 함수 소개 (0) | 2022.02.15 |