Project

[Wasm] 웹 어셈블리란?

Wermut 2025. 2. 27. 02:36

 

웹 어셈블리란?

 

웹 어셈블리가 등장하기 이전 브라우저는 css, html, javascript만을 이해할 수 있었으나,

2017년을 기점으로 여러 브라우저에 WebAssembly를 지원하기 시작했다.

 

WebAssembly 줄여서 wasm은 프로그래밍 언어가 아닌 브라우저에서 실행가능한 새로운 형식의

파일 형식이며 .wasm 확장자를 사용한다. wasm 파일은 기존에 사용하던 여러

언어들을 .wasm 파일로 컴파일하여 사용 가능한데 2024년 기준 wasm으로 변환 가능한 언어는 다음과 같다.

 

 

wasm으로 인해 javascript로 작성한 프로그램이 아니더라도 브라우저에서 실행이 가능한데, 예를 들어

구글에서 만든 이미지 압축 사이트 squoosh가 c++로 작성한 사이트이다.

 

https://squoosh.app/

 

Squoosh

Simple Open your image, inspect the differences, then save instantly. Feeling adventurous? Adjust the settings for even smaller files.

squoosh.app

 

javascript가 있는데도 이 wasm을 사용하는 실행 속도에 있다.

javascript 같은 경우엔 간단한 parsing과 Bytecode 과정을 거쳐 파일을 실행(Ignition)하게 되는데,

wasm의 경우 일련의 과정 없이 즉시 실행(Liftoff)하게 된다.

 

또한 브라우저에선 자체적으로 코드를 최적화하게 되는데

javascript에선 반복되는 코드를 최적화(Optimizing) 하여 크롬의 Turbofan이 이를 실행시킨다.

반면 wasm은 대부분의 코드를 Turbofan으로 실행가능하다.

 

Optimizing과정을 통해 javascript와 비교해 최고 속도는 비슷할 수 있으나 안정적으로 빠른 속도를 기대 가능하다는 점이 

정확한 wasm의 장점이라 할 수 있겠다.

 

현재로선 wasm이 javascript를 대체할 순 없으나 javascript가 시간을 많이 소요하는 작업이 있다면

해당 부분을 wasm으로 대체하는 것이 가능하다.