基准测试

调试版本

调试版本(–enable-debug)和非优化版本(–disable-optimize)**慢得多**。此类版本收集的任何性能指标与发布版浏览器中的指标基本无关。

Rust 优化级别

本地优化版本默认使用 rust 优化级别 1 编译,这与使用 rust 优化级别 2 的 Nightly 版本不同。此设置可显着减少构建时间,但会严重影响任何 rust 代码的运行时性能(例如 stylo 和 webrender)。将以下内容添加到您的 mozconfig 以使用级别 2 构建

ac_add_options RUSTC_OPT_LEVEL=2

配置文件引导优化 (PGO)

配置文件引导优化 默认情况下处于禁用状态,可以将运行时提高最多 20%。但是,构建时间很长。要启用,请将以下内容添加到您的 mozconfig

ac_add_options MOZ_PGO=1

GC 注入

许多 Firefox 版本都具有诊断工具,该工具会导致崩溃更快发生并产生更多可操作信息,但也大大降低了常规使用速度。特别是,“GC 注入”用于所有调试版本以及优化的 Nightly 版本(但不适用于 opt 开发者版或 Beta 版本)。可以通过设置环境变量来禁用注入

    JSGC_DISABLE_POISONING=1

在启动浏览器之前。

异步堆栈

自 **Firefox 78** 以来,异步堆栈不再影响性能,因为 {{bug(1601179)}} 将异步堆栈捕获限制在打开 DevTools 时。

另一个在非发布版本中默认启用的选项是首选项 javascript.options.asyncstack,它为开发人员提供了更好的调试信息。将其设置为 false 以匹配发布版本。(将来可能会在许多情况下禁用此选项。请参阅 {{bug(1280819)}}。

加速图形

尤其是在 Linux 上,即使视觉效果看起来正常,加速图形有时也会导致严重的性能问题。通常,您希望在分析时启用加速,但在 Linux 上,您可能希望禁用加速图形(首选项 -> 高级 -> 常规 -> 在可用时使用硬件加速)。

Flash 插件

如果您正在分析真实的网站,则应禁用 Adobe Flash 插件,以便测试 Firefox 代码而不是 Flash 卡顿问题。在 about:addons > 插件中,将 Shockwave Flash 设置为“从不激活”。

计时器精度

Firefox 降低了 Web 内容可访问的 Performance API 和其他时钟和计时器 API 的精度。它们目前降低到 2 毫秒的倍数;这由 privacy.reduceTimerPrecision about:config 标志控制。

精度的确切值由 privacy.resistFingerprinting.reduceTimerPrecision.microseconds about:config 标志控制。

分析工具

目前 Gecko Profiler 在 UI 中对反向调用堆栈顶部函数分析存在限制,这对于查找调用大量代码的繁重函数非常有用。目前,在查看配置文件时,此类函数可能很容易被忽略,因此请随时*也*使用您最喜欢的原生分析器。它还缺少诸如指令级分析等功能,这在低级分析或查找大型函数内的热点循环等方面可能会有所帮助。一些示例工具包括 OSX 上的 Instruments(XCode 的一部分)、Linux 上的 RotateRight Zoom(在底层使用 perf)以及 Windows 或 Linux 上的 Intel VTune。