V8 엔진 정의
- 구글이 주도하여 C++로 작성된 고성능 JS 및 Web Assembly Engine이다.
- Google Chorme 및 NodeJS에서 사용한다.
V8 엔진 작동원리
V8이 JS 소스 코드를 어떻게 해석하고 실행하나?
- V8은 소스 코드를 가져와서 Parser에게 넘긴다.
- 소스 코드를 분석하고 난 후, AST (Abstract Syntax Tree)로 변환한다.(파싱과정)
- Ignition에게 넘긴다.
- Ignition의 특징
- 컴퓨터가 해석하기 쉬운 바이트 코드로 변환한다. (메모리 공간 아낄 수 있다.)
- 모든 소스를 한 번에 해석하는 Compile 방식이 아닌 코드 한줄 한줄 실행될 때마다 해석하는 Interpreter 방식 사용한다.
- Ignition 장점
- 메모리 사용량 감소 : 바이트 코드로 컴파일링 하기 때문에
- 파싱 시 오버헤드 감소 : 다시 파싱하기도 용이하다.
- 컴파일 파이프 라인 복잡성 감소 : 바이트 코드 하나만 고려하면 된다.
- 소스 코드가 실제로 작동하게 되고, 자주 사용되는 코드는 TurboFan으로 보내져 최적화된 코드 (Optimized Machine Code)로 다시 컴파일된다.
- 사용이 덜 된다 싶으면 Deoptimizing을 한다.
참조 사이트 링크