在Firefox 58中,WebAssembly组件性能提升了10倍

简介: Mozilla在Firefox 58中为WebAssembly(WASM)组件推出了一套双层编译系统,号称解析和编译WASM代码的速度达到30-60MB/s,足够在有线网络中实现实时编译。基准测试表明,新版的性能比旧版提高了10倍,比Chrome快10倍以上。

Mozilla在Firefox 58中为WebAssembly(WASM)组件推出了一套双层编译系统,号称解析和编译WASM代码的速度达到30-60MB/s,足够在有线网络中实现实时编译。基准测试表明,新版的性能比旧版提高了10倍,比Chrome快10倍以上。

在Mozilla Hacks博客的一篇文章中,Lin Clark列举了一些测出的性能数据:

在一部台式机上,我们编译WebAssembly代码的速度高达30-60MB每秒,比网络传输数据包的速度都快。

使用Firefox Nightly或Beta的用户可以在自己的设备上体验这一进步。即使在性能一般的移动设备上编译速度也有8MB/s,快过绝大多数移动网络的平均下载带宽。

独立测试人员复现了类似的测试结果。 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开发的意义:

JavaScript代码需要花费时间解析编译,所以资源消耗远比相同大小的图像文件要多。如今WASM可以做到实时解析和编译,其资源消耗就更接近图像文件,比JavaScript省力多了。改变游戏规则啊!

相关文章:

原文发布时间:2018年02月07日

作者:Kevin Ball

本文来源:InfoQ  如需转载请联系原作者


目录
相关文章
|
6月前
|
Web App开发 Linux 数据安全/隐私保护
Docker本地部署Firefox火狐浏览器并远程访问
Docker本地部署Firefox火狐浏览器并远程访问
|
2月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
4月前
|
Web App开发 Cloud Native 测试技术
云原生之使用Docker部署Firefox浏览器
【7月更文挑战第21天】云原生之使用Docker部署Firefox浏览器
151 3
|
4月前
|
Web App开发 安全 Linux
Linux系统之安装Firefox浏览器
【7月更文挑战第8天】Linux系统之安装Firefox浏览器
216 9
|
6月前
|
Web App开发 Linux 数据安全/隐私保护
Docker本地部署开源浏览器Firefox并远程访问进行测试
Docker本地部署开源浏览器Firefox并远程访问进行测试
303 1
|
Web App开发
应用于Firefox浏览器关于burpsuite的代理问题-详解
应用于Firefox浏览器关于burpsuite的代理问题-详解
205 1
|
数据采集 Web App开发 JavaScript
如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取
在本文中,我们将介绍如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取。我们将以一个简单的示例为例,抓取百度搜索结果页面中的标题和链接,并将结果保存到本地文件中。我们将使用Python语言编写代码,并使用爬虫代理服务器来隐藏我们的真实IP地址。
152 0
如何使用Selenium自动化Firefox浏览器进行Javascript内容的多线程和分布式爬取
|
数据采集 Web App开发 Python
使用Python爬虫获取Firefox浏览器的用户评价和反馈
使用Python爬虫获取Firefox浏览器的用户评价和反馈