DevTools 性能测试概述

此页面简要概述了各种 DevTools 性能测试。

damp

DAMP(DevTools At Maximum Performance 的缩写)是主要的 DevTools 性能测试套件,基于 talos 框架。它主要运行端到端场景,打开工具箱、各种面板并与 UI 交互。它可能会因各种原因导致回归:DevTools 前端更改、DevTools 服务器更改、平台更改等。要调查 DAMP 回归或改进,通常需要单独分析 DAMP 子测试。

有关如何运行 DAMP、分析结果或添加新测试的更多详细信息,请参阅DAMP 性能测试

debugger-metrics

debugger-metrics 测量在 DevTools 中打开调试器时加载的模块数量和模块的总大小。此测试是一个 mochitest,可以使用以下命令在本地执行:

./mach test devtools/client/framework/test/metrics/browser_metrics_debugger.js --headless

在测试结束时,日志应包含一个 PERFHERDER_DATA 条目,其中包含 4 个度量值。 debugger-modules 是加载的调试器特定模块的数量,debugger-chars 是这些模块中的字符数。 all-modules 是加载的模块总数,包括共享模块,all-chars 是这些模块中的字符数。

此测试的重大回归或改进可能表明模块不再延迟加载,或者 UI 的新部分现在预先加载。

inspector-metrics

请参阅 debugger-metrics 的说明。此测试完全相同,但应用于检查器面板。可以使用以下命令在本地执行:

./mach test devtools/client/framework/test/metrics/browser_metrics_inspector.js --headless

netmonitor-metrics

请参阅 debugger-metrics 的说明。此测试完全相同,但应用于网络监控器面板。可以使用以下命令在本地执行:

./mach test devtools/client/framework/test/metrics/browser_metrics_netmonitor.js --headless

webconsole-metrics

请参阅 debugger-metrics 的说明。此测试完全相同,但应用于 Web 控制台面板。可以使用以下命令在本地执行:

./mach test devtools/client/framework/test/metrics/browser_metrics_webconsole.js --headless

server.pool

server.pool 测量 DevTools Pool 的性能,该类被 DevTools 服务器大量使用。此测试是一个 mochitest,可以使用以下命令执行:

./mach test devtools/client/framework/test/metrics/browser_metrics_pool.js --headless

在测试结束时,日志应包含一个 PERFHERDER_DATA 条目,其中包含对应于 Pool 类各种 API 的值。

此测试的回归或改进很可能与 devtools/shared/protocol 中的文件更改相关。

toolbox:parent-process

toolbox:parent-process 测量打开和关闭 DevTools 工具箱后 DevTools 分配的对象数量。此测试是一个 mochitest,可以使用以下命令执行:

./mach test devtools/client/framework/test/allocations/browser_allocations_toolbox.js --headless

测试将记录打开和关闭工具箱多次时的分配情况。日志中的 PERFHERDER_DATA 条目将包含 3 个度量值。objects-with-stacks 是已知分配位置的分配对象的数量,开发人员应该很容易修复。您可以参考分配测试文档,以获取有关此测试的更详细说明以及如何使用它来调查和修复内存问题的说明。

此处的回归可能表示内存泄漏,例如不再清理其依赖项的模块。它也可能表示 DevTools 正在加载更多单例或其他与 DevTools 对象的生命周期无关的对象。

target:parent-process

target:parent-process 测量 DevTools 创建选项卡目标时创建的对象数量。它不涉及 DevTools 前端。此测试是一个 mochitest,可以使用以下命令执行:

./mach test devtools/client/framework/test/allocations/browser_allocations_target.js --headless

有关更多信息,请参阅 toolbox:parent-process 的说明。

reload:parent-process

target:parent-process 测量 DevTools 重新加载 DevTools 工具箱检查的页面时创建的对象数量。此测试是一个 mochitest,可以使用以下命令执行:

./mach test devtools/client/framework/test/allocations/browser_allocations_reload.js --headless

有关更多信息,请参阅 toolbox:parent-process 的说明。请注意,此测试还记录了另一个套件 reload:content-process。

reload:content-process

请参阅 reload:parent-process 的说明。

browser-console:parent-process

browser-console:parent-process 测量 DevTools 打开和关闭浏览器控制台时创建的对象数量。此测试是一个 mochitest,可以使用以下命令执行:

./mach test devtools/client/framework/test/allocations/browser_allocations_browser_console.js --headless

有关更多信息,请参阅 toolbox:parent-process 的说明。