webassembly优缺点
1116
WebAssembly 优势:更好的性能;便携且安全;集成遗留库。WebAssembly 缺点:没有垃圾收集;不能直接访问DOM;旧浏览器不支持。WebAssembly 正在迅速成为一种主流技术,它被所有主要的浏览器供应商采用,特别是因为接近原生的代码性能。
首先WebAssembly是一种新的字解码格式,翻译成英文就是ByteCode,我们将字节码格式这五个字拆分成两部分来看,首先是字节码,那么既然提到了字节,它的表现形式自然就是二进制形式的一连串数据,比如这里我们随便给出一段数据00 61 73 6d 01 00 00 00,然后我们再来看另外一部分格式,我们刚刚随便给出了一串以十六进制形式表示的二进制数据,当然这段数据的的确是一段符合规范的、存在的、最短的且有效的WebAssembly格式的数据。
WebAssembly 优势
WebAssembly 正在迅速成为一种主流技术,它被所有主要的浏览器供应商采用,特别是因为接近原生的代码性能。除此之外 WebAssembly 还拥有以下优势:
- 更好的性能:WebAssembly 在两个方面提供了增强的性能,即启动速度和吞吐量。缩小的 JavaScript 需要被解析、解释、编译和优化。另一方面,
wasm
更紧凑,并且由于其简洁的设计,二进制格式允许更快的解析和快速优化。 - 便携且安全:它独立于平台、独立于硬件和独立于语言,它不对设备或浏览器没有任何特殊要求,这增强了其便携性,代码在内存安全的沙盒环境中进行验证和执行,可以防止安全漏洞和数据损坏。
- 集成遗留库:如果应用程序使用
C/C++
或任何其他兼容语言,WebAssembly 可以轻松地将代码或桌面应用程序可用于 Web。通常使用两个库;用于 Rust 的wasm-pack
和用于C/C++
的Emscripten
。
WebAssembly 缺点
虽然不断开发新功能,但 WebAssembly 的功能是有限的。
- 没有垃圾收集:与采用垃圾回收的 JavaScript 不同,
Wasm
使用平面/线性内存模型,在实例化时分配大量内存并且不会自动回收内存。 - 不能直接访问DOM:WebAssembly 无法访问文档对象模型 (DOM),任何 DOM 操作都需要使用 JavaScript 间接完成。或者,在通过 JavaScript 胶水代码完成 DOM 操作的情况下,也可以使用任何工具链,例如 Emscripten。性能取决于所使用的库。
- 旧浏览器不支持:通常较旧的浏览器没有可用于实例化和加载
Wasm
模块的所需对象。