프론트엔드 개발자가 되기위한 여정 -49

이정우·2022년 10월 25일
0

frontend-bootcamp

목록 보기
52/60

밸!하~

밸로그 여러분 안녕하세요!!

오늘의 주제는 바로바로 JS v8 engine입니다!
이 V8엔진 왜 알아야할까요??

V8엔진을 통해서 자바스크립트는 오늘날 C++과 같은 언어와 유사한 성능으로 실행속도를 개선시켰기때문입니다!

그럼 본격적으로 이 엔진이 무엇인지 알아볼까요??

V8엔진은 무엇일까요??

V8은 구글이 도입한 오픈소스 자바스크립트 엔진입니다!

C++로 작성이 되었으며 크롬이나 크로미움,Node.js를 지원합니다!

이 V8엔진은 환경과 상호작용하고 프로그램을 실행하기위한 바이트 코드를 생성하는 역할을 담당합니다!

처음 V8이 도입되었을때 웹브라우저의 성능향상 매커니즘으로 도입이 되었으나 시간이 지날수록 다른엔진보다 훨씬 향상된 인터프리터가 되었습니다!

또한 V8은 ECMAScript 및 WebAssembly 를 구현하고 x64, IA-32 또는 ARM 프로세서를 사용하는 Windows 7 이상, macOS 10.12+ 및 Linux 시스템에서 실행됩니다.

또한 V8은 JIT Compiler를 지원하는데요!
일반적인 Compiler는 동적컴파일과 정적 컴파일이 따로 있는 반면에
JIT Compiler 는 두개를 합친것으로 실행시점에서 인터프리터 방식으로 바이트 코드를 생성하게 됩니다!

이후 V8엔진은 바이트 코드를 머신코드로 만들게 되고 또한 그 코드를 캐싱하며 같은 함수가 여러번 불릴때 매번
머신코드를 생성하는것을 방지까지 해주는 기능을 가지고 있습니다!

자 조금더 들어가 볼까요??

V8엔진에서 바이트 코드로 바꾸는 컴파일러를 Ignition이라고 합니다!
ignition은 바이트 코드를 생성하고 turbofan이라는 컴파일러를 통해 최적화 컴파일 하는 과정을 거치게 됩니다!

이러한 엄청한 효율때문에 JIT즉 Just In Time이라고 불리게 됬습니다!

그럼 이번에는
V8은 어떤 기능을 가지고 있을까요??

V8의 기능

-자바스크립트 코드 컴파일 및 실행
-콜스택을 핸들링해서 자바스크립트 함수를 특정 순서에 따라 실행
-힙메모리 객체에 대한 메모리 할당 관리
-더 이상 사용하지 않는 객체를 관리 (가비지컬렉터)
-모든 데이터 타입, 연산자, 객체, 함수를 제공
-이벤트 루프를 제공 (이벤트 루프를 사용하여, Callback 함수들의 변화 감지)

이러한 기능들을 가지고 있습니다!

자 이제는 V8엔진을 쓰는 이유를 아시겠죠!

오늘의 포스팅은 여기까지입니다!

오늘은 v8엔진에 대해서 알아보았는데요
왜 v8엔진을 사용하는지와 v8엔진의 장점과 기능들을 알아보는 시간이었습니다!

오늘도 지식한개 쌓아가는 시간이 됬네요!

그럼 다들 밸~바!

profile
주니어 프론트엔드 개발자

0개의 댓글