性能

此页面说明如何优化 Firefox 代码库的性能。

测试文档 说明如何在 Firefox 中测试性能。该 分析器文档 说明如何使用 Gecko 分析器。

通用性能参考

内存分析和泄漏检测工具

  • 开发者工具内存面板 支持获取堆快照、对比快照、计算支配树以显示“占用内存最多的持有者”以及记录分配堆栈。

  • About:memory about:memory 是测量 Mozilla 代码中内存使用情况最简单的工具,也是最佳的起点。它还可以让你执行其他与内存相关的操作,例如触发 GC 和 CC、转储 GC & CC 日志以及转储 DMD 报告。about:memory 基于 Firefox 的内存报告基础设施构建。

  • DMD 是一种工具,用于识别 about:memory 测量中的不足,还可以执行多种通用堆分析。

  • AWSY (are we slim yet?) 是一个内存使用和回归跟踪器。

  • Bloatview 打印每个类的分配和引用计数统计信息,并提供每个类内存泄漏量的总数量。它用作 Mozilla 持续集成测试的一部分。

  • 引用计数跟踪和平衡 是跟踪由引用计数不正确使用引起的泄漏的方法。它们速度慢且使用起来并不容易,因此最适合专家开发人员使用。

  • GC 和 CC 日志

  • LogAlloc 是一种转储 Gecko 中内存分配日志的工具。然后可以针对 Firefox 的默认内存分配器独立地或通过另一个 replace-malloc 库重放该日志,从而允许在完全相同的工作负载下测试其他分配器。

  • 另请参阅有关泄漏查找策略和技巧的文档。

性能分析和性能工具

功耗分析

  • 功耗分析概述。其中包括有关硬件、可测量内容以及推荐方法的详细信息。对于功耗分析新手来说,它应该是起点。

  • (Mac、Linux) tools/power/rapl 是 Mozilla 代码库中的一个命令行实用程序,它使用 Intel RAPL 接口收集软件包、核心、GPU 和内存的直接功耗估算值。

  • (仅限 Mac) powermetrics 是一个命令行实用程序,用于收集和显示各种全局和每个进程的测量值,包括 CPU 使用率、GPU 使用率以及各种唤醒频率。

  • (所有平台) TimerFirings 日志记录是一种内置日志记录机制,用于打印每个触发的时间数据。

  • (仅限 Mac) 活动监视器和 top 电池状态菜单、活动监视器和 top 是三个相关的 Mac 工具,它们存在主要缺陷,但用户经常会参考它们,因此值得了解。

  • (Windows、Mac 和 Linux) 英特尔电源工具 英特尔电源工具提供软件包和处理器 RAPL 估算值的实时图表。它还提供了一个 API,可以通过该 API 获取这些估算值。

  • (仅限 Linux) perf perf 是一个功能强大的命令行实用程序,可以测量许多不同的内容,包括能量估算值和唤醒等内容的高上下文测量值。

  • (仅限 Linux) turbostat 是一个命令行实用程序,用于收集和显示各种与电源相关的测量值,重点关注每个 CPU 的测量值,例如频率和 C 状态。

  • (仅限 Linux) powertop 是一个交互式命令行实用程序,用于收集和显示各种与电源相关的测量值。

性能指标

  • PerfStats - 一个用于低开销收集内部性能指标的框架。