728x90
들어가며
브라우저를 위한 스크립팅 언어로 만들어진 자바스크립트의 처음 모습과 지금의 모습은 많이 달라졌습니다.
처음 나왔을 당시에는 자바스크립트를 이용하여 수십 줄 이상의 코드를 짜는 일도 많지 않았지만, 점차 유명세를 타게 되며 API를 확장하고 코드 줄 수가 많아짐에 따라 실행 엔진을 최적화하는 작업이 이루어졌습니다.
첫 자바스크립트의 시작은 인터프리터 언어였습니다. 하지만 지금은 컴파일러의 특성도 동시에 갖추고 있습니다. 정확히 무엇을 기점으로 변화하게 된 것일까요? 그것은 바로 V8 엔진입니다.
V8 엔진?
V8 엔진은 Google 사의 오픈소스로 대중적으로 많이 사용되는 자바스크립트 엔진입니다. Node JS Runtime과 Chrome Browser 환경에서 사용되고 있습니다.
자바스크립트 엔진은 고수준 언어의 해당하는 자바스크립트 소스 파일을 마이크로프로세서가 이해할 수 있는 기계어로 변환해주는 프로그램을 의미합니다.
V8 엔진의 등장 배경
V8 엔진은 위에서 말한 기존 자바스크립트의 인터프리터 방식의 한계점을 극복하고 수행 속도를 개선하기 위해서 만들어졌습니다. 사용자와의 상호작용을 고려하여 인터프리터 방식이 채택되었지만 코드 줄 수가 많아질수록 속도가 느려진다는 단점을 극복하기 위해서였습니다. V8 엔진은 인터프리터 대신 JIT(Just In Time) Compiler를 구현하는 것으로 코드 실행 단계에서 자바스크립트 코드를 컴파일하도록 변경되었습니다.
JIT(Just-In-Time) 컴파일러와 V8의 동작 방식
- JavaScript Source Code
- 자바스크립트 소스 코드는 먼저 Parser(구문 분석기)를 통해 Lexical Analysis(어휘 분석)를 수행합니다.
- Abstract Syntax Tree(AST)
- 어휘 분석 결과로 AST(추상 구문 트리)를 생성합니다. 이는 코드 구조를 트리 형태로 표현한 것입니다.
- Interpreter Ignition
- V8의 Ignition 인터프리터는 AST를 기반으로 ByteCode(바이트 코드)로 변환하여 실행합니다.
- Compiler TurboFan
- 코드 실행 중 성능 최적화가 필요한 부분을 찾아 TurboFan 컴파일러가 이를 Optimized Machine Code(최적화된 기계어 코드)로 변환합니다.
- Execution
- 최적화된 코드가 준비되면 ByteCode 대신 Optimized Machine Code로 실행하여 성능을 극대화합니다.
728x90
'Web > JavaScript' 카테고리의 다른 글
[React, JavaScript] named export와 default export 무엇을 사용하는 것이 좋을까? (4) | 2024.11.04 |
---|---|
[JavaScript] 0/0, NaN 처리하기 (0) | 2024.05.29 |
[JavaScript] 모던 자바스크립트 Deep Dive - 07장 연산자 (0) | 2024.03.24 |
[JavaScript] 모던 자바스크립트 Deep Dive - 06장 데이터 타입 (0) | 2024.03.23 |
[JavaScript] 모던 자바스크립트 Deep Dive - 05장 표현식과 문 (0) | 2024.03.21 |