WebAssmebly 개념


기존 브라우저는 html,css,js 파일만 지원했으나 이제 WebAssembly 파일도 지원하게 되었다.(언어 아님, 브라우저에서 실행가능한 새로운 파일 형식) WebAssembly 파일 확장자는 .wasm 이다.

WebAssembly는 인터넷에서 실행되는 이진 코드 형식으로, C++, Rust, Go 등의 언어로 작성된 프로그램을 브라우저에서 실행할 수 있게 해준다. 즉, html,css,js 가 아닌 다른 언어로 작성한 프로그램도 브라우저에서 실행 가능하다. ex) Sqoosh (C++), AutoCAD, Unity

이러한 이점으로, 웹 애플리케이션의 성능 향상을 도모하고 웹 기술을 활용한 데스크톱 애플리케이션 개발에도 이용된다. WebAssembly는 브라우저 외에도 Node.js와 같은 서버 측 환경에서도 사용할 수 있다.

WebAssmebly가 빠른 이유


WebAssembly파일은 JS보다 빠르다. 그렇다면 왜 빠른걸까?

JS 실행과정

우리가 작성한 JavaScript ⇒ 간단한 Parsing ⇒ Bytecode(기계친화적인 자바스크립트 해석본) ⇒ 실행(Interpreter가 코드를 실행해줌, 크롬 브라우저에서는 interpreter를 Ignition이라고 부른다.)

현재의 JS가 빠른 이유는 최적화 작업을 하기 때문이다. 반복등장하는 코드를 발견하면 최적화(Optimizing, 기계어랑 가까운 언어로 번역해줘서 컴퓨터가 쉽게 이해할 수 있게 됨)를 해서 Optimized Code로 만듬 ⇒ 실행 (Turbofan)

.wasm 실행과정

.wasm은 따로 실행하는 엔진(Liftoff 엔진)이 있다.

우리가 작성한 .wasm 파일 ⇒ 실행(Liftoff 엔진)

JS와 마찬가지로 Optimizing도 한다. 그래서 JavaScript보다 항상 더 빠르진 않을 수 있다. (비슷한 속도로 동작할 수 있다.) optimizing 된다면 과정도 비슷하기 때문이다. 따라서 JS 코드도 잘짠다면 실행속도도 빠르다.