【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

评论

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

《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛

玩转Devop和研发效能DevStream/DevLake

开源 DevOps cncf WLB

Java System.lineSeparator 方法

HoneyMoose

参天生长大模型:昇腾AI如何强壮模型开发与创新之根?

脑极体

MySQL高级指令

武师叔

8月月更

元宇宙社交应用,靠什么吸引用户「为爱发电」?

融云 RongCloud

元宇宙

开源一夏 | 盘点 GitHub 那些标星超过 20 K 的 Golang 优质开源项目

宇宙之一粟

GitHub 开源 Go 语言 gopher 8月月更

测试开发【Mock 平台】08 开发:项目管理(四)编辑功能和Component抽离

MegaQi

8月月更

RocketMQ整体架构与基本概念

急需上岸的小谢

8月月更

超大模型工程化实践打磨,百度智能云发布云原生 AI 2.0 方案

Baidu AICLOUD

资源调度 异构计算 AI加速 GPU容器虚拟化 云原生AI

2022-Java后端工程师面试指南-(计算机网络)

自然

网络 watt network 8月月更

10道不得不会的Docker面试题

JavaPub

redis Docker

AIRIOT答疑第8期|AIRIOT的金字塔服务体系是如何搞定客户的?

AIRIOT

低代码 物联网 低代码,项目开发

每日一R「03」Borrow 语义与引用

Samson

8月月更 ​Rust

What's new in dubbo-go-pixiu 0.5.1

apache/dubbo-go

dubbogo Dubbo3 Dubbo网关

Thread State 详解

自然

Thread 8月月更

【LeetCode】把二叉搜索树转换为累加树Java题解

Albert

LeetCode 8月月更

机器学习模型验证:被低估的重要一环

澳鹏Appen

人工智能 机器学习 模型开发 模型开发训练 模型验证

选择是公有云还或是私有云,这很重要吗?

WorkPlus

从企业的视角来看,数据中台到底意味着什么?

WorkPlus

CEO对今天的CIO们真正的要求是什么?

WorkPlus

ThreadLocal全面解析(一)

自然

ThreadLocal 8月月更

IFIT的架构与功能

穿过生命散发芬芳

8月月更 IFIT

什么是企业知识库?有什么作用?如何搭建?

金陵老街

vue cli 知识库 spring-boot

RocketMQ 消息集成:多类型业务消息——定时消息

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

Apache DolphinScheduler 3.0.0 正式版发布!

Apache DolphinScheduler

海豚调度 DolphinScheduler 调度器 版本发布

云渲染的应用正在扩大,越来越多的行业需要可视化服务

Finovy Cloud

云渲染 GPU渲染

一次由groovy引起的fullGC问题排查

转转技术团队

风控逻辑利器---规则引擎

转转技术团队

Java 规则引擎 风控 后端、 特征工程

【C#】WCF和TCP消息通信练习,实现群聊功能

南蓬幽

签约计划第三季 8月月更

开源一夏 | 提高代码可重用性,减少重复劳动--手把手带你实现Python自定义模块并上传到pypi,贡献自己创造的轮子为所有人使用,让Python开发更加简单

迷彩

Python 开源 签约计划第三季 8月月更 自定义模块

云服务器基于 SSH 协议实现免密登录

昆吾kw

Linux SSH 云服务器

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