内容简介:Mozilla 在尽可能地提升 WebAssembly 的性能。在最新版本的 Firefox 中,JavaScript 和 WebAssembly 之间的调用现在比非内联的 JavaScript 到 JavaScript 函数调用还要快。Mozilla 还希望超越最近,Mozilla 优化了 JavaScript 和 WebAssembly 之间的调用,并提升了从 WebAssembly 调用内建程序的速度。这些成果的取得得益于两个方面的改进:通过消除组织堆栈帧的不必要工作来减少“簿记(bookkeepi
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Big Java Late Objects
Horstmann, Cay S. / 2012-2 / 896.00元
The introductory programming course is difficult. Many students fail to succeed or have trouble in the course because they don't understand the material and do not practice programming sufficiently. ......一起来看看 《Big Java Late Objects》 这本书的介绍吧!