【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

在 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:002057

评论

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

阿里巴巴用实践告诉你,架构师到底需要掌握什么样的技术?

Java架构师迁哥

计算机原理学习笔记 Day9

穿过生命散发芬芳

计算机原理 4月日更

架构实战营 模块二:课后作业

👈

架构实战营

Seldon 使用 (三): 模型服务如何运行

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

微信朋友圈高性能复杂度分析

【LeetCode】存在重复元素 III Java题解

Albert

算法 LeetCode 4月日更

模块2作业

灯火阑珊

Nacos实践

程序员架构进阶

源码分析 微服务 nacos 28天写作 4月日更

我是如何从零开始学Python: (1)如何选择合适的Python学习工具?

广之巅

Python 4月日更

微信朋友圈的复杂度分析

Fleng

架构实战营

微信朋友圈高性能结构设计构想

我不是坏人

架构实战营模块二作业

冷大大

作业 架构实战营 模块二

阿里致敬武侠首发“Java架构修炼笔记”,深入内核,拒绝蒙圈

Java架构师迁哥

架构实战营 - 模块二作业

Sun

采访彩食鲜 CTO 乔新亮:数字时代,企业如何完成数字化转型?(采访提纲)

xcbeyond

数字化转型 4月日更 人物访谈

架构实战营 模块二:课后作业

Ahu

架构实战营

如何做向上管理?

石云升

28天写作 职场经验 4月日更 向上管理

重读《重构2》- 引入参数对象

顿晓

重构 4月日更

让孩子爱上阅读(二)

箭上有毒

读书笔记 4月日更

业务架构:作业二 朋友圈高性能架构设计

Nick~毓

Prometheus Pushgateway 0.9 和 1.0 的区别。

耳东@Erdong

4月日更

架构实战营 模块二课后作业

iProcess

架构实战营

Github接近10w点赞!阿里巴巴内部Java面试参考指南

Java 程序员 架构 面试

wkhtmltopdf实践

风翱

4月日更 wkhtmltopdf

Linux ifconfig 命令

一个大红包

4月日更

模块2作业 2

杨彬

架构实战营

cri-o技术探秘1

xumc

nginx反向代理和负载均衡策略实战案例

赖猫

nginx

陪伴的进化

小天同学

陪伴 爱情 个人感悟 4月日更 亲情

一天也不要和他们一起工作

池建强

架构实战营 模块二:学习总结

👈

架构实战营

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