WebAssembly - VS JavaScript

  • 简述

    本章将列出 WebAssembly 和 Javascript 的比较。
    Javascript 是一种语言,我们在浏览器中使用了很多。现在,随着 WebAssembly 的发布,我们也可以在浏览器中使用 WebAssembly。
    WebAssembly 出现的原因不是要取代 javascript,而是要处理一些 javascript 难以处理的事情。
    例如
    图像识别、CAD 应用程序、实时视频增强、VR 和增强现实、音乐应用程序、科学可视化和模拟、游戏、图像/视频编辑等任务很难用 javascript 完成。
    使用现在可以编译为 WebAssembly 的 C/C++、Rust 等高级语言,很容易完成上述任务。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。