【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

  • 2018-02-06
  • 本文字数:1038 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

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 省力多了。

改变游戏规则啊!

查看英文原文 With Firefox Version 58, WebAssembly Gets 10X Faster


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-02-06 18:002051

评论

发布
暂无评论
发现更多内容

马特系统开发流程丨马特量化机器人系统开发案例

系统开发咨询1357O98O718

领域驱动设计101 - 绑定模型与实现

luojiahu

领域驱动设计 DDD

实例讲解如何制作Python模式程序

华为云开发者联盟

Python 编程语言 星型程序 Programs 模式程序

ARTS-Week-1

绝影

ARTS 打卡计划 ARTS活动

火币矿池pro系统开发介绍案例丨火币矿池pro源码功能

系统开发咨询1357O98O718

Apache Ranger安全认证配置

大数据技术指南

大数据 3月日更

2021最新分享字节四面成功拿Offer!

比伯

Java 编程 架构 面试 计算机

Ai调参炼丹,一篇就够了

泳鱼

Python 机器学习 深度学习 AI

《经济学人》2021年3月27日刊精彩文章导读及资源免费下载

wbliu85

简单数据结构总结

我是程序员小贱

3月日更

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

一束光的旅程

白洞计划

阿里P7大牛手把手教你!美团Android开发工程师岗位职能要求,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

3.1 Go语言从入门到精通:包

xcbeyond

3月日更 Go 语言

Java面试必问:一位清华大牛用一个坦克大战讲明白了23种设计模式(视频+源码笔记)

Java架构追梦

Java 架构 面试 设计模式 坦克大战

Golang :后端开发中的万能药吗?

华为云开发者联盟

后端 开发 分布式系统 Go 语言

EGG NETWORK永动金融EFTalk火爆来袭

币圈那点事

Google Material Design 元件库

zhuchuanming

元件库

深入理解 JavaScript, 从作用域与作用域链开始

koala

JavaScript 大前端

经常被面试官问道的JavaScript数据类型知识你真的懂吗?

koala

JavaScript 面试 大前端

一文归纳Python特征生成方法(全)

泳鱼

Python 机器学习 深度学习

Spark性能调优-Shuffle调优及故障排除篇

五分钟学大数据

spark Spark调优 3月日更

Android开发必须要会!2021大厂Android面试经验,全网疯传

欢喜学安卓

android 程序员 面试 移动开发

4大华为云“安全镖局”秘密法宝揭秘

华为云开发者联盟

态势感知 华为云 企业主机安全 数据安全中心 Web应用防火墙

由浅入深了解Nirvana NAC公链的两面性NA公链

区块链第一资讯

区块链 公链 挖矿

HUBDEX交易所系统开发源码案例

系统开发咨询1357O98O718

【JS必知必会】高阶函数详解与实战

koala

JavaScript 面试 大前端

巩固知识体系!应聘高级Android工程师历程感言,面试建议

欢喜学安卓

android 程序员 面试 移动开发

Photoshop CC 2019 の 安装

空城机

PhotoShop ps p图 adobe

Ai特征选择,一篇就够了

泳鱼

Python 人工智能 机器学习 深度学习 AI

MySQL-MVCC与锁机制

insight

3月日更

在Firefox 58中,WebAssembly组件性能提升了10倍_JavaScript_Kevin Ball_InfoQ精选文章