Mozilla IonMonkey引擎简介

  Mozilla 的猴子家族迎来新成员,开发人员宣布为长时运行 JavaScript 程序设计的 JIT(即时编译) 解析器 IonMonkey 初步完成

离子猴_蚊仔部屋

Mozilla 开发人员 David Anderson 在博客中表示Firefox 的 JavaScript 引擎 SpiderMonkey 一直以来所用的 JIT 技术(包括老的 TraceMonkey 和新的 JagarMonkey)都是直接将 JavaScript 翻译成机器码。相比 C++ 或者 Java 等生产环境编译器,这都缺失了一个全局性优化的环节。

新开发的 IonMonkey 则引入了一个中间层,其工作流程如下(LLVM 附体?):

  1. 将 JavaScript 翻译成中间表示层 IR(intermediate representation)
  2. 使用各种算法对 IR 进行优化。
  3. 将优化过的 IR 翻译成机器码。

 

特别值得一提的是,IonMonkey 在设计之初已经充分考虑了平台抽象化,现在已经实现对 x86, x86_64 和 ARM 指令集的支持

David Anderson 会在接下来的博客中详细描述在第二步中应用的优化算法,感兴趣的朋友可以跟进。目前有:

  • Loop-Invariant Code Motion (LICM) 循环外无用代码移除。
  • Sparse Global Value Numbering (GVN) 冗余代码移除。
  • Linear Scan Register Allocation (LSRA) 寄存器分配规划,也被用于 HotSpot JVM 和 LLVM 中。
  • Dead Code Elimination (DCE) 无用指令移除
  • Range Analysis 范围分析,移除不必要的边界检测

显而易见的这些优化需要付出一定的时间代价的,所以仅在长时运行的 JavaScript 中应用,短时的 JavaScript 的 JIT 任务依然还是交给 JagarMonkey 完成。

根据 Mozilla 自己 Kraken 的测试,IonMonkey 带来了 26% 的性能提升。

目前 IonMonkey 已经应用于 Firefox Nightly 版本中,将随着 Firefox 18 的发布而投入广泛使用

Via:Ars Technia

 

本篇文章已有4条评论

  1. 1 说:

    目前来说js还是谷歌领先

    • js或许是谷歌领先,但是就仅仅是谷歌浏览器而言,我觉得谷歌浏览器做得非常霸道,不尊重用户,相比于开放的火狐,即使假设速度慢一些,又有什么关系呢,心情舒畅最重要

      • 匿名 说:

        正解,很多人应该都和我一样从来就不是跑分的速度控,我们讲求的是功能的无限可扩展特性,所以我们追随狐狸

      • 匿名 说:

        而且这点速度差在一般应用环境下真不是人肉可以感受到的,这是机器才能分辩的差别

发表评论

电子邮件地址不会被公开。 必填项已用*标注

想显示头像?本站支持Gravatar

Scroll Up