Mozilla将主攻WebAssembly的性能和特性

2018 年 12 月 04 日

Mozilla将主攻WebAssembly的性能和特性

Mozilla 在尽可能地提升 WebAssembly 的性能。在最新版本的 Firefox 中,JavaScript 和 WebAssembly 之间的调用现在比非内联的 JavaScript 到 JavaScript 函数调用还要快。Mozilla 还希望超越MVP状态,使 WebAssembly 在构建应用程序时更加有用。


最近,Mozilla 优化了 JavaScript 和 WebAssembly 之间的调用,并提升了从 WebAssembly 调用内建程序的速度。这些成果的取得得益于两个方面的改进:通过消除组织堆栈帧的不必要工作来减少“簿记(bookkeeping )”以及通过函数之间的直接路径来去掉中转。


在 Firefox 中,其中一个“JavaScript 到 JavaScript 的速度比 JavaScript 到 WebAssembly 的速度快”的场景是内联函数,在这种情况下,函数会重复调用同一个函数,因为编译器会将该函数复制到调用函数中。


Mozilla 还放眼 WebAssembly 的未来,着眼于使 WebAssembly 切实可用所需的特性集。WebAssembly 的 MVP 功能被认为是完善的:


  • 编译目标(Compile target)

  • 快速执行(Fast execution)

  • 紧凑(Compact)

  • 线性内存(Linear memory)


如果 WebAssembly 要为重量级桌面应用开发者提供支持,还需要更多的特性:


  • 线程——一个以SharedArrayBuffers为基础的提案;

  • SIMD (单指令多数据执行模式)——积极开发中;

  • 64-bit寻址——计划中;

  • “流式编译(Streaming compilation)” ——在Firefox中已完成,其他浏览器正在积极开发;

  • 隐式HTTP缓存——积极开发中。


对于标准 Web 开发,还需要以下特性:


  • JS和WebAssembly之间的快速调用——在Firefox中已完成,其他浏览器正在积极开发;

  • 快速简单的数据交换——有多个不同的提案正在积极地讨论中;

  • ES模块集成——提案形成,初始实现正在积极开发;

  • 工具链集成——进行中;

  • 向后兼容——wasm2js工具。


为了满足 JavaScript 框架和 compile-to-JavaScript 语言的需要,WebAssembly 还有进一步的需要:


  • 垃圾收集——有两份提案正在讨论之中;

  • 异常处理——早期研究和开发阶段;

  • 调试——某些浏览器的调式工具提供了不完善支持;

  • “尾部调用(Tail calls )”——提案讨论中。


在浏览器之外使用 WebAssembly 还需要满足更多的要求:


  • 可移植接口——提案讨论中;

  • 标准化运行时——有一些正在开发中的早期项目。


WebAssembly 刚刚度过了最小可行产品阶段,规范和实现正在非常积极地讨论和开发中。要了解更多关于 WebAssembly 的现在和未来的信息,请查阅 Mozilla 提供的一份内容丰富的介绍


英文原文


https://www.infoq.com/news/2018/11/mozilla-webassembly-performance


2018 年 12 月 04 日 10:261009
用户头像

发布了 1008 篇内容, 共 307.1 次阅读, 收获喜欢 272 次。

关注

评论 1 条评论

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

虚拟化Pod性能比物理机还要好,原因竟然是这样!

亨利笔记

Kubernetes 容器 k8s vSphere pod

源码浅析 - CocoaLumberjack 3.6 之 DDLog

Edmond

ios log4j CocoaLumberjack SourceCode DDLog

我的关注清单

lmymirror

知识管理 关注清单 RSS

人人都要有经营意识

Neco.W

创业 重新理解创业 公司管理

聊天机器人为什么这么难?

青菜年糕汤

人工智能 自然语言处理 搜索引擎 chatbot 聊天机器人

Web3极客日报#134

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

哲少荐书:这才是心理学

Jackey

心理学 读书

我在极客大学算法训练营的收获

熊斌

极客时间 极客大学

笔记:《如何系统思考》之因果回路图

wiflish

思维方式

企业如何选择物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

写在2020年五四青年节

耿老的竹林

个人成长

一文带你搞懂RPC核心原理

松花皮蛋me

微服务 微服务架构 微服务冶理 RPC 远程调用

File类的文件操作

Howe

Java File 文件 io

实战营第一战:FizzBuzz

escray

学习 CSD 认证实战营

python oop 指南

志学Python

Python python 爬虫 oop

中台是为了复用?未必!浅谈产业中台建设的特点与误区

孤岛旭日

架构 中台 企业中台 企业架构 产业互联网

五十年前的一桩公案:数据库关系模型的流行史(下)

青菜年糕汤

数据库 分布式数据库 数据库规范 关系型数据库 数据库设计

我看拼多多黄峥:旧世界瓦解冰消

池建强

拼多多 黄峥

Netty 源码解析(五): Netty 的线程池分析

猿灯塔

思维偏差与产品设计的关联思考

石君

产品设计 思维方式 安全产品设计

游戏夜读 | 做游戏选什么专业?

game1night

花更多的时间在自己的优势上

Neco.W

创业 自我管理 重新理解创业

leetcode20.有效的括号

Damien

算法 LeetCode

五十年前的一桩公案:数据库关系模型的流行史(上)

青菜年糕汤

数据库 分布式数据库 数据库规范 关系型数据库 数据库设计

Web3极客日报#135

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

Golang杂谈 - graceful shutdown为何离奇失效?

星语

golang 后端 平滑重启 服务端

NIO看破也说破(一)—— Linux/IO基础

小眼睛聊技术

Linux 架构 后端 Netty nio

轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?

楼下小黑哥

支付宝 微信支付 支付系统 付款码

缘起:很久很久以前

escray

学习 测试驱动开发实战营

python中的GIL锁和互斥锁问题

半面人

Python

如何成为一个高效的问题解决者?

汪锋

Mozilla将主攻WebAssembly的性能和特性-InfoQ