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 中内存模型的缺点是 −
|
加载时间 & 性能 |
对于 javascript,当在浏览器内部调用时,必须下载并解析 javascript 文件。 随后,解析器将源代码转换为 JavaScript 引擎在浏览器中执行代码的字节码。 Javascript 引擎非常强大,因此,与 WebAssembly 相比,Javascript 的加载时间和性能都非常快。 |
WebAssembly 最重要的目标是比 JavaScript 更快。由高级语言生成的 Wasm 代码尺寸更小,因此加载时间更快。 但是,像 GO 这样的语言,当编译为 wasm 时,会为一小段代码生成一个大文件。 WebAssembly 的设计方式使其编译速度更快,并且可以在所有主要浏览器上运行。 与 JavaScript 相比,WebAssembly 在性能方面仍然需要进行大量改进。 |
调试 |
Javascript 是人类可读的并且可以轻松调试。 在浏览器内向 JavaScript 代码添加断点可以让您轻松调试代码。 |
WebAssembly 提供文本格式的代码,可读,但仍然很难调试。 Firefox 确实允许您在浏览器中查看 .wat 格式的 wasm 代码。 您无法在 .wat 中添加断点,这将在将来提供。 |
浏览器支持 |
Javascript 在所有浏览器中都能正常运行。 |
所有主流 Web 浏览器都支持 WebAssembly。 |