Mozilla 在 Firefox 58 中为 webAssembly(WASM)组件推出了一套双层编译系统, 号称解析和编译 WASM 代码的速度达到 30-60MB/s, 足够在有线网络中实现实时编译基准测试表明, 新版的性能比旧版提高了 10 倍, 比 Chrome 快 10 倍以上
在 Mozilla Hacks 博客的一篇文章中, Lin Clark 列举了一些测出的性能数据:
独立测试人员复现了类似的测试结果 Reddit 用户 a_potato_is_missing 用 Luke Wagner 的 tanks 编译速度测试做了对比, 他使用一台安装了安卓系统的华为 P10 Lite 进行测试, 结果显示, 在 Firefox v57 中的编译速度为 1.7MB/s, 换成 Firefox v58 就提升到了 11.8MB/s Windows 10 桌面平台的测试中, 编译速度从 v57 上的 9MB/s 提高到了 v58 上的 52.8MB/s 相比之下, Chrome 在 Android 设备上只跑了 1MB/s, 桌面平台上只有 4.1MB/s, 远远落后
这次性能提升之前, 人们已经发现 WebAssembly 组件的速度比 JavaScript 更快了此前的报告中, Figma 的一篇案例分析显示, 切换到 WebAssembly 可以带来 3 倍的加载速度; Hackernoon 公布的基准测试则表明, 计算密集型图形程序的执行速度提升了 30%
在一篇博文中, Lin Clark 详细介绍了编译器如何利用 Firefox 的并行架构将编译任务拆解为两个独立的线程第一个线程直接启动, 实时将网络传输来的代码编译成一个基础版本; 第二个线程则在后台将这个基础版本进一步编译为优化好的版本优化版本编译完成后就会替换掉基础版本, 进一步提升代码运行效率
这次改进意味着 WebAssembly 可以在网络传输代码的同时实时编译出结果 Yehuda Katz 指出了这一进步对 web 开发的意义:
来源: https://juejin.im/entry/5a7bc7f16fb9a0633d71c5ef