使WebAssembly更快:Firefox最新的流式分层编译器

很多人认为WebAssembly是一种可能改变游戏规则的技术,因为它可以使代码在Web上运行得更快。目前已经有了一些 WebAssembly加速技术,还有一些加速方案即将出现。

其中一种加速技术就是流式编译,即允许代码一边下载,浏览器一边编译。直到现在(原作者写此文时,Firxfox 58还未发布),流式编译还是一种潜在的加速技术,随着Firefox 58版本的发布,这种技术变成了现实。

Firefox 58中的另一种新的机制是引入了新的两层编译器,即baseline编译器和优化编译器。其中baseline编译器的代码编译速度比优化编译器快10-15倍。

流式编译和分层编译器结合起来意味着代码编译的速度比从网络中下载还要快。

这里写图片描述

在PC机上,编译WebAssembly的速度可以达到30-60兆字节/秒,这比在网络中传送数据包的速度还要快。

使用Firefox Nightly或Beta版本,你可以在自己的设备上进行一下测试,即使是在平均性能的移动设备上,编译速度也可以达到8兆字节/秒——这几乎比所有移动网络的平均下载速度还要快。

为什么这很重要

Web性能倡导者认为当页面中包含大量JavaScript时,JavaScript的下载会导致页面的加载速度变慢。

这主要是因为解析和编译时间。Steve Souders指出,Web性能曾经的瓶颈在于网络,而如今Web性能的新瓶颈是CPU以及主线程的执行速度。

这里写图片描述

因此我们希望尽可能地将更多的工作从主线程分离出来,而且越早越好以便充分利用所有的CPU时间,更进一步,希望CPU做更少的工作。

使用JavaScript,可以做到一些,比如当数据包下载的过程中,可以在其他线程中解析JS,解析操作不可避免且有较大的工作量,另外需要等待解析完成才能开始编译。为了编译,又得切回到主线程,因为JavaScript往往是在运行时编译。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值