NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

智汇华云 | ArcherOS Stack—软件定义数据中心“利器”

华云数据

Kubectl Plugin 推荐(一)| 可观测性篇

郭旭东

kubectl kubectl plugin

滚雪球学 Python 第二轮开启,进阶之路,列表与元组那些事儿

梦想橡皮擦

28天写作 3月日更

笔记整理:技术架构涵盖内容和演变过程总结

小傅哥

Java 程序员 小傅哥 架构设计 架构图

云小课丨网络好不好,ping一下就知道

华为云开发者联盟

网络 虚拟私有云 ping ICMP 安全组

详解NLP和时序预测的相似性(附赠AAAI21最佳论文INFORMER的详细解析)

华为云开发者联盟

自然语言处理 深度学习 时序预测 RNN Informer

Elasticsearch Index Management 索引管理

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

科技强国梦的百度式注脚:扎根土壤、拥抱变局、眺望星空

脑极体

KubeEdge 1.6发布:可靠的K8s原生边云API

华为云原生团队

开源 云原生 边缘技术 kubeedge

华云大咖说 | 高校混合云建设及应用

华云数据

聊聊我对SCRM的理解

boshi

CRM 七日更

AI数学基础之:概率和上帝视角

程序那些事

人工智能 AI 程序那些事 概率论

Nydia

关于写作的一点小想法「Day 13」

道伟

28天写作

Elasticsearch Analyzer 分词器

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

MySQL数据库DDL、DML详解

若尘

MySQL

百分点数据科学实验室:产品生命周期管理创新应用落地实践

百分点大数据团队

2021抖音面经分享:Java进阶核心知识集/算法刷题宝典(金三银四必备)

比伯

Java 编程 架构 面试 程序人生

MySQL数据库的安装与使用

若尘

MySQL 数据库

Java的锁

并发编程

25个关键技术点,带你熟悉Python

华为云开发者联盟

Python

互联网短平快下,DevCloud如何支撑软件开发的“转型”?

华为云开发者联盟

android 敏捷开发 软件开发 华为云 devcloud

工作三年,小胖问我:什么是生产者消费者模式?菜到抠脚!

一个优秀的废人

Java 多线程 阻塞队列 生产者与消费者

不知不觉不假思索——可供性

Justin

心理学 28天写作 游戏设计

百分点大数据技术团队:数据治理“PAI”实施方法论

百分点大数据团队

聊聊园区网中的专网架构

冯骐

运维 网络 VRF 虚拟路由表

《精通比特币》学习笔记(第二章)

棉花糖

区块链 读书笔记

翻译:《实用的Python编程》03_05_Main_module

codists

Python

从JVM底层原理分析数值交换那些事

秦怀杂货店

JVM 交换数值

Shibboleth IdP4 升级指南

冯骐

认证 Shibboleth IdP 上海教育认证 上海教育

2021 创新加速周蓄势待发,铆足牛劲再出发!

亚马逊云科技 (Amazon Web Services)

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