-
자바스크립트 수행 과정JavaScript 2019. 1. 4. 18:06반응형
자바스크립트 엔진 파이프라인
자바스크립트 엔진들이 소스 코드를 기계어로 만들기까지 공통적으로 수행하는 과정을 살펴봅시다.
먼저, 자신이 작성한 자바스크립트 소스 코드에서부터 시작합니다.
자바스크립트 엔진은 소스 코드를 파싱해서 Abstract Syntax Tree(AST) 로 만듭니다. 그리고 AST를 바탕으로, 인터프리터는 바이트 코드를 생성합니다. 여기까지가 자바스크립트로 작성된 코드를 실제로 엔진이 실행하는 부분입니다.코드를 더 빠르게 실행하기 위해, 바이트코드는 프로파일링 된 데이터와 함께
최적화 컴파일러
(optimizing compiler)로 보내집니다. 이곳에서는 프로파일링 데이터를 기반으로 매우 최적화 된 기계어를 생성합니다. 만약 정확하지 않은 결과가 나왔다면 다시 deoptimizes하여 바이트 코드로 되돌립니다.이제 노란 박스에 들어있는 과정을 자세히 봅시다!
인터프리터/컴파일러 파이프라인
인터프리터가 코드를 해석하고, 최적화 할 때 주요 자바스크립트 엔진들 사이에 어떤 차이가 있는지 알아봅시다. 일반적으로는 다음과 같은 공통된 파이프라인을 가집니다.
인터프리터(interpreter)
: 최적화되지 않은 바이트코드(bytecode)를 빠르게 생성합니다.
최적화 컴파일러(optimizing compiler)
: 매우 최적화된 기계어 코드(macine code)를 약간 시간을 들여서 생성합니다.
이 과정에서 바이트코드는 중간 언어(IR, intermediate representation)입니다. 만약
interpreter
모드라면 바이트코드를 하나씩 읽어서 실행하고,JIT
모드라면 바이트 코드를 기반으로 컴파일하여 수행합니다.여기서 잠깐 용어를 짚고 넘어갑시다.
바이트코드(Bytecode, portable code, p-code)는 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 기계어보다 더 추상적이다.
JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다. 이 기법은 프로그램의 실행 속도를 빠르게 하기 위해 사용된다.
출처 : https://velog.io/@godori/JavaScript-%EC%97%94%EC%A7%84-%ED%86%BA%EC%95%84%EB%B3%B4%EA%B8%B0-mdjowmjlcb
반응형'JavaScript' 카테고리의 다른 글
[iOS솔루션] 오토 포커싱 이슈 (0) 2023.06.07 자바스크립트 스로틀,디바운스 (0) 2017.08.07 자바스크립트 Ajax와 JSONP 비교 개념도 (1) 2017.07.12 자바스크립트 Execution Context 란 (0) 2017.04.18 자바스크립트 태스크 큐, 이벤트 루프, (0) 2017.03.28