手机版
你好,游客 登录 注册
背景:
阅读新闻

谷歌V8 JavaScript引擎引入新解释器Ignition,旨在减少内存消耗

[日期:2016-08-30] 来源:infoq.com  作者:David Iffland ,译者 谢丽 [字体: ]

谷歌发布了新的JavaScript解释器Ignition,Chrome 53将在一些内存有限的Android设备上使用它。

谷歌资深软件工程师Ross McIlroy在一篇博文中探讨了构建Ignition的原因

V8目前没有解释器。初始执行的JavaScript代码最先被解析,并编译成一个未优化的状态。解析器和编译器的协同工作机制会导致部分代码后续解析两次、甚至是三次。总之,按照谷歌的说法,V8将33%的页面启动时间用在了解析和编译代码上。这也导致了大量的内存开销。

通过使用解释器,谷歌希望减少当前系统的内存使用。Ignition还是依赖于一个解析器,但JavaScript被编译成字节码,而不是原生代码。McIlroy表示,“我们[使用Ignition]将代码编译成简洁的字节码,而不是编译成机器码,大大减少了结果代码。因此,我们可以减少系统的内存使用,对于不常运行的函数而言尤其如此。”

由于字节码较小,所以可以编译全部源代码,而不用避免编译未使用的代码。也就是说,脚本只需要解析一次,而不是像当前的编译过程那样解析多次。

McIlroy还提供了一些技术细节:

Ignition解释器使用低级的、体系结构无关的TurboFan宏汇编指令为每个操作码生成字节码处理程序。TurboFan将这些指令编译成目标平台的代码,并在这个过程中执行低级的指令选择和机器寄存器分配。Ignition是一个寄存器机,每个字节码都将其输入和输出指定为显式寄存器寻址;它不是一个栈式机,每个字节码消费输入,并把输出推送到一个隐式栈上。

其他浏览器供应商已经将使用解释器作为第一个步骤。Mozilla的SpiderMonkey和微软的Chakra JavaScript引擎都是一开始就有解释器,而且它们都是连接到了一个两层的编译系统

从Chrome 53(预计在9月初发布稳定版本)开始,内存为512MB或不足512MB的Android设备将开始使用Ignition。要想深入了解Ignition,请查看谷歌发布的设计文档

查看英文原文V8's New JavaScript Interpreter Improves Memory Consumption

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-08/134724.htm

linux
相关资讯       JavaScript引擎  Ignition  谷歌V8 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款