Firefox 4 性能

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 网站和开发者参与总监。她热衷于开源软件,并教育公司和社区了解开源软件如何改变软件行业。她是一位引人入胜的演讲者,在演讲期间和演讲结束后都会与听众互动,并经常就开源软件的商业方面发表演讲。

更多由 Stormy Peters 撰写的文章…


33 条评论

  1. timmywil

    干得好,伙计们!它仍然需要赶上 WebKit 的速度,但已经有了很大的改进。另一方面,我在某些情况下看到了一些令人印象深刻的数据,Jager 在这些情况下会比 JavascriptCore 快两倍。例如,http://jsperf.com/set-vs-function-call

    2011 年 3 月 22 日 下午 8:20

  2. Michael Butler

    您认为 Firefox 4 会在未来的某个时刻在 Linux 安装中获得硬件加速吗?

    2011 年 3 月 22 日 下午 8:42

    1. David

      J’espère bien il faudrait savoir si Firefox vas plus vite sur la version 11.04 de Linux-Ubuntu.

      2011 年 3 月 22 日 上午 9:46

    2. Mélanie

      是的,我对 firefox 4 很满意,但当 HW 加速在 Linux 上可用时,我会更高兴。

      2011 年 3 月 22 日 上午 10:37

  3. Lars Gunther

    @Michael

    它通过 XRender 具有相当多的 GPU 加速功能。不幸的是,Mozilla 似乎忘记在他们的营销中说明这一点 - 似乎没有明显的理由。

    2011 年 3 月 22 日 下午 12:34

  4. Cezary Tomczyk

    终于。我们一直在等待 Firefox 4 正式版。

    2011 年 3 月 22 日 下午 12:37

  5. nemo

    timmywil,WebKit 与 JavaScript 并没有太大关系。你是指 V8 还是 JSC 吗?在这种情况下,在这些方面,Firefox 4 的确表现出色。请访问 arewefastyet.com 查看最新的 JSC 和 V8 与各种 TM+JM 的对比(以及此处对这项新工作的详细分析)。

    http://arewefastyet.com/?a=b&view=regress

    在我个人的 Kraken 测试中
    http://m8y.org/tmp/kraken.xhtml 似乎 Firefox 表现出色。

    至于渲染,你可能会说 WebKit 方面 Firefox 4 表现更好。你在测试什么,但我不会称之为几乎。

    2011 年 3 月 22 日 下午 4:23

  6. timmywil

    nemo:很高兴看到这一点。我确实提到了 JavascriptCore,但实际上我并不知道 WebKit 与某个 JavaScript 引擎无关。

    2011 年 3 月 22 日 下午 6:33

  7. QOAL

    (最后一部分的“制作”链接出现故障。)

    2011 年 3 月 23 日 上午 5:48

  8. Jens

    ACK。Win 和 Mac 上的硬件加速将如何帮助我在 Linux 上?

    2011 年 3 月 23 日 上午 11:43

  9. nemo

    Jens,在这方面有两点需要注意。
    1)Firefox 通过 Xrender 在 Linux 上进行硬件加速已经有很长时间了。
    2)Firefox 在 Linux 上内置了硬件加速,除了支持的显卡外,您还可以尝试 MOZ_GLX_IGNORE_BLACKLIST=1 环境变量,如果您认为您的显卡可能仍然可以使用。

    就我个人而言,我在所有尝试过的 ATI 显卡上都没有遇到过 fglrx/ATI 的问题,因此我已在我的 /etc/profiles.d 中设置了该变量,使其在系统范围内生效。

    在英特尔显卡上,我遇到了问题,无法通过
    https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/webgl-conformance-tests.html
    在 Ubuntu 10.10 下运行(Ubuntu 11.04 运行正常),因此我没有将其设置为默认值,即使大多数东西运行正常。

    2011 年 3 月 23 日 下午 1:36

  10. Jim Wrobel

    V8 柱状图部分的解释是什么?看起来 FX4 实际上比 FX3.6 慢了 6 倍。

    2011 年 3 月 24 日 上午 6:29

  11. nemo

    Jim,v8bench 不使用毫秒时间,而是使用所有基准测试部分的加权分数。我相信在 v8bench 常见问题解答中有描述。无论如何,我认为由于评分,它并不精确地快 6 倍,评分是几何的或类似的东西。

    无论如何。v8bench 越高越好。

    2011 年 3 月 24 日 下午 1:57

  12. Dwight Stegall

    上面有人说 FF4 需要追赶 Webkit。当浏览器中没有任何内容(Chrome 和 Safari)时,很容易让它变快。我宁愿使用像 Firefox 这样的较慢的浏览器,它允许您在内部调整它,并且拥有无与伦比的附加组件。继续使用那些无用的 Webkit 浏览器吧。我们会嘲笑你,因为你无法做到我们能做到的事情。例如,谷歌限制了扩展开发者可以做的事情。这就是为什么他们的扩展几乎没用。

    2011 年 3 月 24 日 下午 10:41

  13. Dwight Stegall

    我最不喜欢 Firefox 的一件事是,没有简单的方法可以更改滚动条的颜色。我不是说要更改它们,以便每个人都能看到它们。我只是想添加一些 CSS 到 userChrome.css 中,以便只有我能看到更改。这样就不会影响任何人。

    2011 年 3 月 24 日 下午 10:49

  14. Brett Zamir

    Firefox 4 对我来说很慢(在 Vista 上)。即使禁用了所有扩展,像页面上/页面下这样的简单操作也会出现不可接受的响应延迟。由于这个原因,我认真地继续使用 3.6,我认为这将在最终版本中解决,但不幸的是,它没有解决。难以相信我是唯一一个,但这非常明显。即使图形或渲染更快,如果 UI 响应性差,也没有多大用处。

    2011 年 3 月 27 日 上午 0:26

    1. tristian

      你不是唯一一个,我也有同样的问题……

      2011 年 4 月 1 日 下午 6:03

  15. WW

    在 Linux Fedora 14 中,我通过禁用默认的 nouveau 视频驱动程序并为我的显卡安装 nvidia 驱动程序来解决我的 JavaScript 速度慢问题。

    2011 年 3 月 27 日 下午 12:49

  16. naresh

    firefox 在 ubuntu linux 上占用太多内存。与 Windows 相比,它有点慢。希望 firefox 4 能解决这个问题!

    2011 年 3 月 28 日 上午 10:22

  17. Richard

    在 FF 4.0 上,页面上/页面下简直是灾难。

    2011 年 4 月 21 日 上午 1:55

    1. Brett Zamir

      你在用 Vista 吗?我也是在那里遇到了可怕的页面上/页面下问题。

      2011 年 4 月 22 日 上午 7:43

  18. Tony Cochran

    Firefox 4 很慢。而且它正在折磨我。它加载页面比 IE 或 Firefox 3 花费的时间更长……选项卡组加载起来像糖浆一样。

    2011 年 4 月 24 日 上午 2:19

  19. Matthew

    我不知道你们在规格方面在说什么。但我昨晚在看到邀请后下载了 Firefox 4。看起来和感觉起来像一个完全不同的浏览器,而且比旧版本快得多。我很高兴。

    我试过两次 Google Chrome,然后又卸载了两次。在我的电脑上运行非常慢。Internet Explorer 似乎是少数几个网站所必需的,它是最慢的。但这可能是我的老旧 Dell Dimension 3000 电脑的问题。

    2011 年 5 月 1 日 上午 6:36

  20. Eesger Toering

    您好,

    自从第一个完整版本(1.0 2004)起,我就从 Opera 切换到 Firefox,并且我一直对这款软件感到非常满意和印象深刻。

    直到我决定升级到 4.0 版本,我还尝试了 4.0.1 版本,但该版本也极其缓慢(打开一个新标签页需要长达一分钟,毫不夸张!我在运行 Windows XP)。经过一番努力,我能够降级到 3.6.17 版本……(插件..)

    我使用 4.0 版本的体验非常糟糕,但我也收到了来自我的员工和客户的抱怨,说“我称赞的 FireFox”已经不再是以前的样子了。

    请让它恢复到以前一样流畅的操作!

    此致,

    E. Toering

    2011 年 5 月 23 日 上午 1:49

    1. louisremi

      您好 Eesger,
      正如您所料,并非所有用户都遇到类似的问题,否则我们不会在 6 周内获得 1.5 亿次下载 ;-)
      话虽如此,我建议您在互联网上搜索如何为 Firefox 创建一个全新的配置文件,并从这里开始。
      此致,
      Louis-Rémi

      2011 年 5 月 23 日 上午 8:34

  21. Eesger Toering

    您好 Louis-Rémi,

    感谢您的回复!我认为我将在接下来的几周内重新构建我的电脑(当我找到时间;-)。正如所说,我的电脑中出现了一些奇怪的问题(可能是墨菲定律,他总是喜欢来找我)。但让我担心的是,整体稳定性似乎并没有改善(基于我在过去几个月里听到的一些评论)。

    抱歉我无法提供更多细节。

    此致,

    E. Toering

    2011 年 5 月 24 日 下午 4:16

  22. jerry

    我的电脑运行的是 Windows 7。在我升级到 firefox 4 之前,互联网似乎很快,可以打开很多标签页而不会变慢,加载速度也很快。一旦我升级到 ff4,我注意到新的外观,但也注意到它比之前的 firefox3 慢。我想知道是否有方法修复它,或者我应该直接回到旧版本?看来我不是唯一一个遇到 ff4 问题的人。

    2011 年 5 月 29 日 下午 4:02

    1. louisremi

      您好 Jerry,
      您可以先使用 Firefox Sync 保存您的书签和密码,然后使用配置文件管理器创建一个全新的配置文件。

      2011 年 5 月 30 日 上午 2:55

  23. bray

    我对 FF4 非常失望。如果需要创建新的配置文件才能获得勉强可以接受的性能,您应该在用户费心下载它之前告诉他们这一点。在 1.5 亿次下载中,有多少次下载最终变成了用户对您破坏了他们的浏览体验感到厌烦?

    2011 年 6 月 10 日 下午 6:19

  24. Dave

    拜托,FF4 需要 512 兆字节的 RAM 和 200 兆字节的硬盘空间才能启动,这在我看来不是进步!其他版本需要的资源要少得多,现在我想不出还有哪个浏览器需要如此多的资源。

    有趣的是,没有人提到 WebGL 的漏洞……这适用于 FF4、Chrome、Safari 和 Opera,请查看此链接 http://www.theregister.co.uk/2011/05/11/chrome_firefox_security_threat/

    目前我仍在使用 FF3.5 版本。顺便说一下,FF4 似乎一直在“比平时多一点”地连接到互联网。

    2011 年 6 月 14 日 下午 1:03

  25. John

    我喜欢 firefox 4。比我之前安装的版本好多了。我最讨厌这个版本的一点是它与谷歌页面速度不兼容。

    2011 年 7 月 4 日 上午 8:05

  26. nmn

    很高兴看到 firefox 在基准测试中变得越来越快(几年后,我们可能需要原子钟的精度来衡量它)。然而,firefox 在我们的电脑上却变得越来越慢。期待看到一些更智能的电脑,能够理解基准测试数据并更快地运行。

    2011 年 8 月 23 日 上午 3:07

  27. pgecet 2011

    FireFox 的插件非常有用且具有创新性,但它们应该更新到所有 FireFox 版本。

    2011 年 9 月 14 日 上午 11:42

本文评论已关闭。