在Firefox 58中,WebAssembly组件性能提升了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省力多了。改变游戏规则啊!

相关文章:

  • WebAssembly,开发者赢了

  • WebAssembly:随风潜入夜

  • 实验进行中:.NET WebAssembly支持

  • 使用Mono将C#编译运行至WebAssembly平台

原文地址:http://www.infoq.com/cn/news/2018/02/firefox-58-web-assembly-gets-10x


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud Zuul(九)之路由自动刷新原理

一、现象 发布新服务,然后在数据库配置了路由,使用服务路径访问404。然后重新发布新的服务,就可以继续访问得到 (1)配置了路由第一次访问 (2)重新发布后访问 二、分析 (1&#xf…

dotnetcore+vue+elementUI 前后端分离 三(前端篇)

说明:本项目使用了 mysql employees数据库,使用了vue axois element UI 2.0 ,演示了 单页程序 架构 ,vue router 的使用,axois 使用,以及 element UI 控件的使用。通过这几种技术的组合,实现了对 employee 的增&…

SpringCloud Greenwich(一)注册中心之nacos、Zuul和 gateway网关配置

本项目是搭建基于nacos注册中心的springcloud,使用zuul网关和gateway网关。 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (2)环境 nacos 1.4.1…

欢乐ssl暑假赛【2019.8.6】

前言 莫得前言 成绩 JJJ表示初中,HHH表示高中后面加的是几年级,只放前10 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDDEEE111(J−3)WYC(J-3)WYC(J−3)WYC500500500100100100100100100100100100100100100100100100222(H−1)QYH(H-1)QYH(H…

Actor-ES框架:Ray-Handler-消息订阅器编写

消息订阅器:Ray是基于Event Sourcing设计的ES/Actor框架,消息发布后需要订阅处理,订阅器主要有以下两类:CoreHandler消息订阅器RabbitSubSubHandlerToReadHandler消息订阅器RabbitSubSQLToReadHandler(ToReadHandler的…

Actor-ES框架:Actor编写-ESGrain与ESRepGrain

ESGrain生命周期Ray中ESGrain继承自Grain扩展了Grain的生命周期。Grain的生命周期参加文档附录:1-Grain生命周期-译注.mdESGrain重写了Grain的OnActivateAsync方法。ESGrain的初始化过程如下:初始化ESGrain中的State调用ReadSnapshotAsync()读快照。如果…

DotNetAnywhere:可供选择的 .NET 运行时

我最近在收听一个名为DotNetRock 的优质播客,其中有以Knockout.js而闻名的Steven Sanderson 正在讨论 " WebAssembly And Blazor "。也许你还没听过,Blazor 正试图凭借WebAssembly的魔力将 .NET 带入到浏览器中。如果您想了解更多信息&#xf…

SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置

本项目是搭建基于consul注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (2)环境 consul 1.9.0…

Actor-ES框架:消息发布器与消息存储器

消息发布器:Ray是基于Event Sourcing设计的ES/Actor框架,ESGrain状态(State)的修改、ESGrain之间的通信默认使用RabbitMQ通信。消息的发布器主要是RabbitPubESGrain。RabbitPub特性RabbitPub特性是RabbitMQ消息发布器。RabbitSub特…

consul的安装搭建

一、下载consul consul官网下载地址:https://www.consul.io/downloads 旧版本下载 consul 1.9.3直接下载地址: consul_1.9.3_windows_amd64.zip consul_1.9.3_linux_amd64.zip 二、安装 将consul_1.9.3_xxx.zip解压的xxx/consul目录 (1&…

使用xUnit为.net core程序进行单元测试

一. 导读为什么要编写自动化测试程序(Automated Tests)?可以频繁的进行测试可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试。肯定比人工测试要快。可以更快速的发现错误。基本上…

jzoj6276-[Noip提高组模拟1]树【线段树,扫描线,倍增】

正题 题目大意 一棵树,若干个点对,求不包括任何一个点对的路径数量。 解题思路 我们考虑将不合法的方案在坐标系上表示。 我们先只考虑一个点对(x,y)(x,y)(x,y),若xxx和yyy没有祖先关系,则不合法的路径一个点在xxx的子树中&…

SpringCloud Greenwich(三)注册中心之zookeeper、Zuul和 gateway网关配置

本项目是搭建基于zookeeper注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (2)环境 zookeeper…

Metrics, tracing 和 logging 的关系

译者注Peter Bourgon原作: Metrics, tracing, and logging译者:吴晟原作发表时间: 2017年2月21日这是在OpenTracing和分布式追踪领域内广受欢迎的一篇博客文章。在构建监控系统时,大家往往在这几个名词和方式之间纠结。 通过这篇文…

快速序列化组件MessagePack介绍

简介MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能。 MessagePack for C&#xff…

SpringCloud Greenwich(四)注册中心之eureka、Zuul和 gateway网关配置

本项目是搭建基于eureka注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 eureka-server eureka注册中心 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (…

【ASP.NET Core】给路由规则命名有何用处

上一篇中老周给伙伴们介绍了自定义视图搜索路径的方法,本篇咱们扯一下有关 URL 路径规则的名称问题。在扯今天的话题之前,先补充点东东。在上一篇中设置视图搜索路径时用到三个有序参数:{2}{1}{0},分别是 Area、Controller、Actio…

SpringCloud Greenwich(五)之nacos、dubbo、Zuul和 gateway集成

本项目是搭建基于nacos注册中心的springcloud,集成dubbo框架,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 class-provider dubo…

.NET/.NET Core中更清晰的堆栈跟踪

在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(PII)约束限制了日志记录的内容时。随着任务并行库&#xff…

SpringCloud Greenwich(六)集成dubbo与openfeign的feignTargeter报错,cannot access its superinterface Targeter

一、现象 org.springframework.beans.factory.BeanCreationException: Error creating bean with name feignTargeter defined in class path resource [org/springframework/cloud/openfeign/FeignAutoConfiguration$HystrixFeignTargeterConfiguration.class]: Initializati…