hmk run dev

웹 어셈블리(WebAssembly)를 쓰는 이유 본문

javascript

웹 어셈블리(WebAssembly)를 쓰는 이유

hmk run dev 2022. 3. 28. 10:17

웹 어셈블리란 왜 쓰는 것일까?

 

새로운 프로그램 언어가 아닌 

브라우저에서 실행할 수 있는 새로운 파일 형식

WASM를 쓰는 이유

 

자바스크립트 말고 다른 언어의 코드도 브라우저에서 실행 가능

 

javascript 보다 작동 속도가 빠르다.

 

js 코드는 크롬 브라우저가 실행해준다.

 

그 과정을 뜯어보면 상당히 복잡한데

 

javascript 작동과정

 

1. 크롬 브라우저가 js 코드를 발견한다.

 

2. parsing ex) 코드의 변수 함수 등을 스캔

 

3. Bytecode // 기계 친화적인 js 해석본

> 반복되는 코드는 최적화 Optimized Code(Optimizing 해줌)

> Turbofan 엔진이 빠르게 실행해줌

 

옵티마이즈는 취소도 가끔 함 ex) 타입이 변하거나 그럴 때!

 

4. interpreter가 코드 실행 (ignition)

 


wasm 작동과정

 

1. 크롬에서 만든 liftoff 엔진이 wasm을 실행

> js처럼 parsing의 과정이 필요 없음 // 미리 컴파일된 바이너리 포맷사용

> 속도가 빠름

 

2. optimizing 할 수 있는 코드들을 만나면 Turbofan이 실행시켜줌

> 거의 모든 코드가 optimzing 될 수 있음 (js는 반복 출현하는 코드만 주로 함)

> optimzing 취소가 거의 일어나지 않음

> wasm은 빠른 Turbofan을 잘 씀

 

 

그렇다고 wasm이 항상 js보다 빠른 것은 아님

> js가 optimzing이 되면 turbofan에서 코드를 실행

> wasm이 optimzing이 되면 turbofan에서 코드를 실행 

>> js코드도 충분히 잘짠다면 wasm과 비슷한 성능을 낼 수 있음!

 

종합해보자면 wasm은

1. 터보팬 작동까지 시간이적게 걸림

2. 거의 모든 코드가 터보팬으로 이동하고

3. 중간에 꺼질일이 드물다.

4. 항상 더 빠른 속도를 내진 않지만 안정적으로 빠른 속도 기대 가능

 

wasm을 쓰면서 javascript코드가 turbofan을 잘 쓰도록 코드를 짜는 힌트도 얻을 수 있을지도..?

자바스크립트 대체제가 아닌 작성한 js코드 중에 특정 부분이 느리다면 사용할 수 있는 좋은 방법 중 하나 가라고 말할 수 있겠습니다.

 

 

 

 

 

 

Comments