WebAssembly - JavaScript

本章将列出 WebAssembly 和 Javascript 之间的比较。

Javascript 是一种语言,我们在浏览器中经常使用它。 现在,随着 WebAssembly 的发布,我们也可以在浏览器中使用 WebAssembly。

WebAssembly 出现的原因并不是要取代 javascript,而是为了处理某些 javascript 难以处理的事情。

例如

图像识别、CAD应用、实时视频增强、VR和增强现实、音乐应用、科学可视化和模拟、游戏、图像/视频编辑等任务很难用javascript完成。< /p>

使用C/C++、Rust等高级语言,现在可以将其编译为WebAssembly,很容易完成上述任务。 WebAssembly 生成易于在浏览器内执行的二进制代码。

这里是 Javascript 和 WebAssembly 之间的比较列表。

参数 Javascript WebAssembly

编码

您可以轻松地用 Javascript 编写代码。 编写的代码是人类可读的并保存为 .js。 在浏览器内部使用时,您需要使用 <script> 标签。

代码可以在 WebAssembly 中以文本格式编写,并保存为 .wat。 以.wat 格式编写代码很困难。 最好从其他高级语言编译代码,而不是从头开始编写 .wat。

您无法在浏览器中执行 .wat 文件,必须使用可用的编译器或在线工具将其转换为 .wasm。

执行

用 javascript 编写的代码在浏览器中使用时必须进行下载、解析、编译和优化。

我们有 .wasm 格式的 WebAssembly 代码,已编译为二进制格式。

内存管理

Javascript 在创建变量时分配内存,在不使用时释放内存并将其添加到垃圾回收中。

WebAssembly 中的内存是保存数据的数组缓冲区。 您可以使用 Javascript API WebAssembly.memory() 分配内存。

WebAssembly 内存以数组格式存储,即易于理解和执行的平面内存模型。

WebAssembly 中内存模型的缺点是 −

  • 复杂的计算需要时间。

  • WebAssembly 不支持垃圾回收,不允许重用内存,导致内存浪费。

加载时间 & 性能

对于 javascript,当在浏览器内部调用时,必须下载并解析 javascript 文件。 随后,解析器将源代码转换为 JavaScript 引擎在浏览器中执行代码的字节码。

Javascript 引擎非常强大,因此,与 WebAssembly 相比,Javascript 的加载时间和性能都非常快。

WebAssembly 最重要的目标是比 JavaScript 更快。由高级语言生成的 Wasm 代码尺寸更小,因此加载时间更快。

但是,像 GO 这样的语言,当编译为 wasm 时,会为一小段代码生成一个大文件。

WebAssembly 的设计方式使其编译速度更快,并且可以在所有主要浏览器上运行。 与 JavaScript 相比,WebAssembly 在性能方面仍然需要进行大量改进。

调试

Javascript 是人类可读的并且可以轻松调试。 在浏览器内向 JavaScript 代码添加断点可以让您轻松调试代码。

WebAssembly 提供文本格式的代码,可读,但仍然很难调试。 Firefox 确实允许您在浏览器中查看 .wat 格式的 wasm 代码。

您无法在 .wat 中添加断点,这将在将来提供。

浏览器支持

Javascript 在所有浏览器中都能正常运行。

所有主流 Web 浏览器都支持 WebAssembly。