JS 团队的 Dave Mandelin 和图形团队的 Joe Drew 总结了 Firefox 4 中的关键性能改进。
网络需要快速浏览器。尖端的 HTML5 网页播放游戏、混合和共享地图、声音 和 视频,显示电子表格和演示文稿,以及 编辑照片。只有高性能浏览器才能做到这一点。网络需要什么,我们就有责任去创造什么,我们一直在努力使 Firefox 4 变得更快。
Firefox 4 在几乎所有领域都进行了性能改进。JavaScript 和图形方面的改进最为显著,这对现代 HTML5 应用程序和游戏至关重要。在本文的其余部分,我们将介绍关键性能技术,并展示它们如何使网络变得更加“酷炫”。
快速 JavaScript:释放 JägerMonkey 的力量
JavaScript 是网络的编程语言,为大多数动态内容和行为提供支持,因此快速的 JavaScript 对于富应用程序和游戏至关重要。Firefox 4 从一个名为 JägerMonkey 的强大的引擎中获得了快速 JavaScript。从技术的角度来说,JägerMonkey 是一个支持多架构、每方法 JavaScript JIT 编译器,具有 64 位 NaN 装箱、内联缓存和寄存器分配功能。让我们来分解一下:
-
多架构
JägerMonkey 完全支持 x86、x64 和 ARM 处理器,因此我们在传统计算机和移动设备上都很快。W00t!
(接下来是技术细节:如果您不关心它是如何工作的,请跳过后面的部分。)
每方法 JavaScript JIT 编译
JägerMonkey 的基本思想是将 JavaScript 翻译(编译)成机器码,而且是“即时”(JIT)执行的。JIT 编译 JavaScript 并不新鲜:以前的 Firefox 版本也包含 TraceMonkey JIT,它可以生成非常快的机器码。但有些程序无法被 TraceMonkey “JIT 编译”。JägerMonkey 采用更简单的设计,能够编译所有内容,但不会进行太多优化。但它仍然很快。而 TraceMonkey 仍然存在,在可能的情况下提供额外的加速。
-
64 位 NaN 装箱
这是 JavaScript 引擎用来表示程序值的新 64 位格式的技术名称。这些格式旨在帮助 JIT 编译器并针对现代硬件进行了优化。例如,考虑一下浮点数,它们是 64 位的。在旧的 32 位值格式中,浮点计算需要引擎分配、读取、写入和释放额外的内存,所有这些都很慢,尤其是在处理器比内存快得多的情况下。使用新的 64 位格式,不需要额外的内存,计算速度要快得多。如果您想了解更多信息,请参阅技术文章 Mozilla 的新的 JavaScript 值表示。
-
内联缓存
属性访问(例如
o.p
)在 JavaScript 中很常见。如果没有引擎的特殊帮助,它们将很复杂,因此很慢:首先引擎必须在对象及其原型中搜索属性,然后找到值存储的位置,最后才能读取值。内联缓存的思想是:“如果我们可以跳过所有这些其他操作,只读取值怎么办?” 这是它的工作原理:引擎为每个对象分配一个形状,描述其原型和属性。最初,JIT 为 o.p
生成通过繁琐搜索获取属性的机器码。但一旦该代码运行,JIT 就会找出 o 的形状以及如何获取属性。然后,JIT 会生成专门的机器码,它只需验证形状是否相同并获取属性。对于程序的其余部分,该 o.p
运行速度尽可能快。请参阅技术文章 为乐趣和利润在 JavaScript 上进行 PIC 处理,了解有关内联缓存的更多信息。
-
寄存器分配
由基本 JIT 生成的代码花费大量时间来读取和写入内存:对于像
x+y
这样的代码,机器码首先读取 x
,然后读取 y
,将它们相加,然后将结果写入临时存储。使用 64 位值,这最多需要 6 次内存访问。更高级的 JIT(如 JägerMonkey)会生成尝试将大多数值保存在寄存器中的代码。JägerMonkey 还会进行一些相关的优化,例如尝试在值是常量或只是其他值的副本时完全避免存储值。以下是 JägerMonkey 对我们基准测试分数的影响
这比 SunSpider 和 Kraken 提高了 3 倍以上,比 V8 提高了 6 倍以上!
快速图形:GPU 加速的浏览
对于 Firefox 4,我们加快了 Firefox 使用大多数现代计算机中的 图形处理单元 (GPU) 绘制和合成网页 的方式。
在 Windows Vista 和 Windows 7 上,所有网页都 使用 Direct2D 进行硬件加速。这为许多复杂的网站和演示页面提供了巨大的提速。
在 Windows 和 Mac 上,Firefox 使用 3D 框架(Direct3D 或 OpenGL)来加速网页元素的合成。这种技术也被用来 加速 HTML5 视频的显示。
最终结论
快速、硬件加速的图形加上快速的 JavaScript 意味着尖端的 HTML5 游戏、演示和应用程序在 Firefox 4 中运行良好。您可以在 一些网站 上看到这一点,这些网站 我们很喜欢 制作 快速 的网站。在 Mozilla Labs 游戏 条目中还有更多内容可以尝试,当然,一定要查看 网页奇观。
关于 Stormy Peters
Stormy Peters 是 Mozilla 网站和开发者参与总监。她热衷于开源软件,并教育公司和社区了解开源软件如何改变软件行业。她是一位引人入胜的演讲者,在演讲期间和演讲结束后都会与听众互动,并经常就开源软件的商业方面发表演讲。
33 条评论