Service Worker 性能测试¶
我们的性能测试是在 mozperftest 框架中运行的 mochitests。测试位于 dom/serviceworkers/test/performance 下,并在 perftest.toml 中列出。除了标准的 mochitest 机制之外,性能测试还在顶层定义了一个 perfMetadata
变量,并调用
info("perfMetrics", JSON.stringify(metrics));
来报告其结果,其中 metrics 是一个从测试点名称到标量数值的映射。有关更多信息,请参阅 性能脚本文档。
它们可以通过 mach perftest 运行,或者作为普通的 mochitests 通过 mach test 运行。(目前我们无法运行完整的清单,请参阅 bug 1865852。)
添加新的测试¶
像往常一样为 mochitests 将文件添加到 perftest.toml 中。
修改 taskcluster/kinds/perftest 下的 linux.yml、macosx.yml 和 windows11.yml。目前,每个测试都需要单独添加到运行命令中(例如 此处)。可以忽略 kind.yml,它提供了一些默认值。
将您的新测试添加到 perfdocs/config.yml 中。
使用以下命令修改生成的文档:
$ ./mach lint -l perfdocs . --fix --warnings --outgoing
目前存在一个 bug,这可能会导致命令失败。再次运行它应该会成功。
性能分析器标记¶
性能分析器标记可用于收集计时数据。可以从 perftest 中检查已知名称的标记。必须使用 AUTO_PROFILER_MARKER_TEXT,因为我们需要标记的开始时间和结束时间。例如
AUTO_PROFILER_MARKER_TEXT("interesting thing #1", DOM, {}, ""_ns);
AUTO_PROFILER_MARKER_TEXT("interesting thing #2", DOM, {}, ""_ns);
可以从 perftest 中检查
await startProfiler();
interestingThings();
let pdata = await stopProfiler();
let duration_ms = inspectProfile(pdata, [
"interesting thing #1",
"interesting thing #2"
]);
在 try 任务中暂存测试¶
$ ./mach try fuzzy --full
查找 ‘service-worker
以查找以下内容:
结果¶
结果可以在 treeherder 上的 mozilla-central 和 autoland 中找到。查找 linux-sw、macosx-sw 和 win-sw(示例)。这些符号名称在 taskcluster/kinds/perftest 下的 .yml 文件中定义。