javascript - WebAssembly 使用什么引擎?
问题描述
在 Chrome 中,JavaScript 运行在 V8 引擎上,但运行 WebAssembly 代码的引擎是什么?
浏览器如何突然能够通过 WebAssembly 提高性能?这个 WebAssembly 引擎是在浏览器中始终可用,还是最近被添加到浏览器中?
解决方案
自 2017 年 11 月以来,仅所有主要浏览器(Chrome、Firefox、Safari、Edge)都支持 WebAssembly,这意味着旧版本的浏览器不支持 WebAssembly。(来自Mozilla的博客文章)
为了理解为什么 WebAssembly 比 Javascript 更快,有一个 Lin Clark 的优秀系列(链接)。
文章的结论是引用
在许多情况下,WebAssembly 比 JavaScript 更快,因为:
- 获取 WebAssembly 花费的时间更少,因为它比 JavaScript 更紧凑,即使在压缩时也是如此。
- 解码 WebAssembly 比解析 JavaScript 花费的时间更少。
- 编译和优化花费的时间更少,因为 WebAssembly 比 JavaScript 更接近机器代码,并且已经在服务器端进行了优化。
- 不需要重新优化,因为 WebAssembly 内置了类型和其他信息,因此 JS 引擎不需要推测它何时优化它使用 JavaScript 的方式。
- 执行通常需要更少的时间,因为开发人员需要知道的编译器技巧和陷阱更少,才能编写出一致的高性能代码,而且 WebAssembly 的指令集更适合机器。
- 由于内存是手动管理的,因此不需要垃圾收集。
推荐阅读
- html - 打开 mat-select 对话框时聚焦特定的 mat-option 项?
- azure - 带有 scriptPath 选项的 Azure DevOps AzureCLI 任务无法通过身份验证来创建 Azure 容器实例
- excel - 列必须包含值;如果是,则该值的列偏移量必须包含另一个值
- swift - 组合布局和损坏的自身大小的单元格
- excel - 有没有办法使用 vba 在用户表单中的组合框中的所有值之间切换?
- python - 将子域匹配到域 python sqlalchemy
- module - Prestashop v.1.7 我无法访问菜单的子类别
- browser - WebGL指纹有多独特
- c++ - Qt c++ QPainter QVector 与 QPoint
- console - 是否可以将控制台命令保存为收藏夹或键盘快捷键,以便我可以快速连续多次运行它?