JS v8 engine

.·2022년 7월 1일
0

blog

목록 보기
31/52

[1] V8엔진이란?

  • 구글에서 C++로 만든 자바스크립트, 웹 어셈블리 엔진이고 오픈 소스이다. 현재는 구글 크롬과 노드 js에서 사용을 하고 있다고 한다.

  • 인터프리터 언어인 자바스크립트의 속도를 개선하기 컴파일을 최적화 해주는 엔진이다.

[2] 인터프리터 언어

  • 컴파일 언어는 코드를 기계어로 변환하여 사용을 하지만 인터프리터 언어는 그때 마다 번역을 하면서 실행을 하는 방식입니다.

  • 과거에는 인터프리터 언어인 자바스크립트 속도를 개선하기 위해서 자바스크립트 코드를 머신 코드로 번역하여 사용하는 컴파일러 형식을 사용하였다.

  • 풀코드젠은 자바스크립트를 머신코드로 변환하여 빠르게 실행할 수 있도록 해주는 일종의 컴파일러이고 크랭크샤프트는 풀코드젠으로 코드가 실행된 뒤, 자바스크립트의 추상구문트리를 최적화하여 static single-assignment, SSA form으로 변환하는 옵티마이저입니다.

  • V8 엔진은 내부적으로 여러 쓰레드를 사용하는데, 메인 쓰레드에서는 코드를 컴파일하고 실행하고, 프로파일러 쓰레드에서는 어떤 메서드에서 시간이 오래 걸리는지 알려주며, 그 외에도 가비지 컬렉터 등을 위한 여러 쓰레드가 있습니다. 크랭크샤프트는 풀코드젠으로 코드가 실행된 이후 프로파일러 쓰레드가 충분한 데이터를 얻게된 이후, 그 데이터들을 바탕으로 최적화를 실행합니다.

[3] V8 엔진의 작동원리

  • 최적의 성능을 실행시켜주기 위한 엔진이다. 개발자가 깊게 이해를 할 필요는 없다고 생각한다.

  • JIT(Just-In-Time) Compiler = 동적컴파일 + 정적컴파일

  • 실행 시점에 인터프리터 방식으로 바이트 코드를 생성한다.

  • Ignition(V8 Engine이 바이트 코드로 바꾸는 컴파일러)가 바이트 코드를 생성하고 TurboFan이라는 컴파일러를 통해서 죄적화 컴파일 과정을 거친다고 한다.

  • 바이트코드 컴파일러가 최적화 과정을 대신 처리해준다.

[참조]

https://velog.io/@dalbodre/V8-%EC%97%94%EC%A7%84%EC%9D%98-%EA%B3%BC%EA%B1%B0-%ED%98%84%EC%9E%AC-%EA%B5%AC%EC%A1%B0

0개의 댓글