WebAssembly-자바 스크립트
이 장에서는 WebAssembly와 Javascript 간의 비교를 나열합니다.
Javascript는 브라우저 내에서 많이 사용하는 언어입니다. 이제 WebAssembly 릴리스를 통해 브라우저 내에서 WebAssembly를 사용할 수도 있습니다.
WebAssembly가 등장한 이유는 자바 스크립트를 대체하기 위해서가 아니라 자바 스크립트로 처리하기 어려운 특정 사항을 처리하기 위해서입니다.
For example
이미지 인식, CAD 애플리케이션, 라이브 비디오 증강, VR 및 증강 현실, 음악 애플리케이션, 과학적 시각화 및 시뮬레이션, 게임, 이미지 / 비디오 편집 등과 같은 작업을 자바 스크립트로 수행하기가 어렵습니다.
이제 WebAssembly로 컴파일 할 수있는 C / C ++, Rust와 같은 고급 언어를 사용하면 위에서 언급 한 작업을 쉽게 수행 할 수 있습니다. WebAssembly는 브라우저 내에서 실행하기 쉬운 바이너리 코드를 생성합니다.
여기에 Javascript와 WebAssembly를 비교 한 목록이 있습니다.
매개 변수 | 자바 스크립트 | 웹 어셈블리 |
---|---|---|
코딩 |
자바 스크립트로 쉽게 코드를 작성할 수 있습니다. 작성된 코드는 사람이 읽을 수 있으며 .js로 저장됩니다. 브라우저 내에서 사용하는 경우 <script> 태그를 사용해야합니다. |
코드는 WebAssembly에서 텍스트 형식으로 작성할 수 있으며 .wat로 저장됩니다. .wat 형식으로 코드를 작성하는 것은 어렵습니다. .wat에서 처음부터 작성하는 대신 다른 고급 언어에서 코드를 컴파일하는 것이 가장 좋습니다. 브라우저 내에서 .wat 파일을 실행할 수 없으며 사용 가능한 컴파일러 또는 온라인 도구를 사용하여 .wasm으로 변환해야합니다. |
실행 |
브라우저 내에서 사용될 때 자바 스크립트로 작성된 코드는 다운로드, 파싱, 컴파일 및 최적화되어야합니다. |
.wasm의 WebAssembly 코드가 이미 컴파일되어 있고 바이너리 형식입니다. |
메모리 관리 |
자바 스크립트는 변수가 생성 될 때 메모리를 할당하고 사용하지 않을 때 메모리를 해제하고 가비지 컬렉션에 추가합니다. |
WebAssembly의 메모리는 데이터를 보유하는 배열 버퍼입니다. Javascript API WebAssembly.memory ()를 사용하여 메모리를 할당 할 수 있습니다. WebAssembly 메모리는 이해하기 쉽고 실행을 수행하기 쉬운 플랫 메모리 모델과 같은 배열 형식으로 저장됩니다. WebAssembly에서 메모리 모델의 단점은-
|
로드 시간 및 성능 |
자바 스크립트의 경우 브라우저 내에서 호출되면 자바 스크립트 파일을 다운로드하고 파싱해야합니다. 나중에 파서는 소스 코드를 javascript 엔진이 브라우저에서 코드를 실행하는 바이트 코드로 변환합니다. Javascript 엔진은 매우 강력하므로 WebAssembly에 비해 javascript의로드 시간과 성능이 매우 빠릅니다. |
WebAssembly의 가장 중요한 목표는 JavaScript보다 빠르다는 것입니다. 고수준 언어에서 생성 된 Wasm 코드는 크기가 작아서로드 시간이 더 빠릅니다. 그러나 GO와 같은 언어는 wasm으로 컴파일 될 때 작은 코드 조각에 대해 큰 파일 크기를 생성합니다. WebAssembly는 컴파일 속도가 더 빠르며 모든 주요 브라우저에서 실행될 수 있도록 설계되었습니다. WebAssembly는 여전히 javascript와 비교하여 성능 측면에서 많은 개선 사항을 추가해야합니다. |
디버깅 |
자바 스크립트는 사람이 읽을 수 있으며 쉽게 디버깅 할 수 있습니다. 브라우저 내에서 자바 스크립트 코드에 중단 점을 추가하면 코드를 쉽게 디버그 할 수 있습니다. |
WebAssembly는 읽을 수있는 텍스트 형식으로 코드를 제공하지만 여전히 디버깅하기는 매우 어렵습니다. Firefox에서는 브라우저 내에서 wasm 코드를 .wat 형식으로 볼 수 있습니다. .wat에 중단 점을 추가 할 수 없으며 이는 향후 사용 가능할 것입니다. |
브라우저 지원 |
Javascript는 모든 브라우저에서 잘 작동합니다. |
모든 주요 웹 브라우저는 WebAssembly를 지원합니다. |