본문 바로가기
Javascript

webassembly에 대하여

by progrpsk 2017. 6. 22.

작년 6월부터 webassembly에 대한 관심이 생겨서 지켜보고 있었다.

webassembly란 간단하게 말해서 C, C++의 native 언어로 짠 프로그램을 웹에서도 동일한 속도로 돌려보겠다고 하는 프로젝트이다.

그래서 순서는 먼저 C, C++로 코딩을 한 다음 컴파일을 통해 최종적으로 바이너리코드 비슷한 wasm 파일을 만든다.

그리고 wasm 파일을 js의 함수를 통하여 웹에서 실행시켜준다.

이렇게 실행시켜보면 웹에서도 엄청나게 빠르게 돌아가는 것을 볼 수 있다.

그 속도차를 확연히 느낄수 있는 예제가 바로 아래 비디오 영상처리 앱 예제이다.


https://d2jta7o2zej4pf.cloudfront.net/


위 예제를 보고 정말 까무러치게 놀랐다.

이젠 웹이서도 이런게 가능하구나 하고 말이다.

지금 wasm 파일을 지원해주는 브라우저는 chrome, mozila, safari 정도 알고 있다.

구글, 파폭, 애플에서 지원해 줄 정도면 앞으로 더 활발히 사용될 것임을 예상할 수 있다.


문제는 현재 개발된 버전으로는 저 컴파일 하는 과정이 꽤 복잡하다는 것이다.

binaryen 이나 emscripten 등의 부가적인 컴파일 프로그램을 사용해야 한다.

물론 webassembly를 개발하는 사람들의 최종 목표는 중간과정을 모두 사라지게 하여

C에서 바로 wasm 파일로 컴파일 하는 것이다.

아래의 링크에 그에대한 자세한 설명이 나와있다.


https://www.slideshare.net/gyeongseokseo/web-assembly-70493156


결론적으로 보면 정말 좋은 프로젝트이다.

하지만 나는 마냥 웃을수만은 없다.

나의 주전공 언어는 js인데 webassembly를 사용하려면 C나 C++로 회귀해야 될수도 있기 때문이다.

지금내가 알아본 정보한에서는 js로도 wasm를 컴파일할 수 있는 방법은 존재하지 않았다.

(물론 이 짓이 생각해보면 비효율적이기에 방법이 없는것도 이해가 된다.)


기존에 구글에서 개발한 asm.js를 사용하는 방안은 이미 webassembly의 속도를 못 따라간다는 이론적인 한계가 발표되었기에 나같이 js를 즐겨쓰는 프로그래머가 webassembly를 사용하려면 철새마냥 다시 C, C++의 세계로 돌아가야 할 수도 있다.


물론 내 지식에 한계에서는 그렇다는 건데,

혹여 js 유저들을 위한 새로운 방안책이 이미 있거나 앞으로 나오지 않을까도 생각해 본다.

(혹 제가 못 발견한 새로운 방법이 있다면 댓글을 남겨주시면 감사합니다!)


'Javascript' 카테고리의 다른 글

dragula.js 사용법  (0) 2017.06.24
윈도우 팝업창 뛰우기  (0) 2017.06.23
survey.js validation 이벤트 사용하기  (0) 2017.06.21
synaptic.js 사용하기  (0) 2017.06.20
무한스크롤 구현하기  (0) 2017.06.19

댓글