ITADN
google/tachometer
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

tachometer Build Status NPM  package

tachometer 是一个用于在 Web 浏览器中运行基准测试的工具。它使用重复 采样和统计方法,可靠地识别即使是微小的运行时差异。

安装 | 用法 | 为什么? | 示例 | 特性 | 采样 | 测量模式 | 解读结果 | 替换 NPM 依赖项 | JavaScript 模块导入 | 浏览器 | 性能跟踪 | 远程控制 | 配置文件 | CLI 用法

安装

npm i tachometer

用法

npx tachometer bench1.html [bench2.html ...]

为什么?

即使你在同一台机器上,使用同一个浏览器,运行同一段 JavaScript, 在同一天,每次你仍然会得到不同的结果。但如果你进行足够多的 重复采样 并应用正确的统计方法,你就能可靠地 识别出运行时中微小的差异。

示例

让我们测试两种向页面添加元素的方法。首先创建两个 HTML 文件:

inner.html

<script type="module">
  import * as bench from '/bench.js';
  bench.start();
  for (let i = 0; i < 100; i++) {
    document.body.innerHTML += '<button></button>';
  }
  bench.stop();
</script>

append.html

<script type="module">
  import * as bench from '/bench.js';
  bench.start();
  for (let i = 0; i < 100; i++) {
    document.body.append(document.createElement('button'));
  }
  bench.stop();
</script>

现在运行 tachometer:

npx tachometer append.html inner.html

Tachometer 打开 Chrome 并加载每个 HTML 文件,测量 bench.start()bench.stop() 之间的时间。它在两个文件之间进行轮询, 每个文件至少运行 50 次。

[==============================================------------] 79/100 chrome append.html

几秒钟后,结果已就绪:

┌─────────────┬─────────────────┬─────────────────┬─────────────────┐
│ Benchmark   │        Avg time │   vs inner.html │  vs append.html │
├─────────────┼─────────────────┼─────────────────┼─────────────────┤
│ inner.html  │ 7.23ms - 8.54ms │                 │          slower │
│             │                 │        -        │    851% - 1091% │
│             │                 │                 │ 6.49ms - 7.80ms │
├─────────────┼─────────────────┼─────────────────┼─────────────────┤
│ append.html │ 0.68ms - 0.79ms │          faster │                 │
│             │                 │       90% - 92% │        -        │
│             │                 │ 6.49ms - 7.80ms │                 │
└─────────────┴─────────────────┴─────────────────┴─────────────────┘

这告诉我们,使用 document.body.append 方法而不是 innerHTML 方法平均会快 90% 到 92%。tachometer 报告的范围 是不同基准测试之间百分比变化的 95% 置信区间。请参阅 解读结果 以获取 更多信息。

功能

  • 使用 /bench.js 模块测量你自己的 特定计时,通过 设置 window.tachometerResult 全局变量(或通过轮询任意 JS 表达式),或在任何本地或远程 URL 上测量 首次内容绘制

  • 通过两个或 多个文件、URL、URL 查询字符串参数或浏览器之间的轮询来 比较基准测试,以测量哪个 更快或更慢,以及快慢多少,并具有统计显著性。

  • 交换你所依赖的任何 NPM 包的 依赖项版本,以比较已发布的版本、远程 GitHub 分支或本地 git 仓库。

  • 自动采样,直到我们拥有足够的精度来 回答你提出的问题。

  • 使用远程 WebDriver 远程控制运行在不同机器上的 浏览器

采样

最小样本量

默认情况下,从 每个 基准测试中采集 最少 50 个样本。你可以 使用 --sample-size 标志或 sampleSize JSON 配置选项更改最小样本量。

自动采样

在初始 50 个样本之后,tachometer 将继续采集样本,直到 所有基准测试之间存在明确的统计显著性差异, 最长 3 分钟

您可以使用 --timeout 标志或 timeout JSON 配置选项来更改此持续时间,以分钟为单位。将 --timeout=0 设置为禁用自动采样 功能。将 --timeout=60 设置为采样长达一小时。

自动采样条件

您还可以通过配置 自动采样 条件 来配置 tachometer 在决定何时停止自动采样时应检查哪些统计条件。

要从命令行设置自动采样条件,请使用 --auto-sample-conditions 标志并附带一个逗号分隔的列表:

--auto-sample-conditions=0%,10%

要从 JSON 配置文件设置自动采样条件,请使用 autoSampleConditions 属性,并传入一个字符串数组(即使只有一个条件):

{
  "autoSampleConditions": ["0%", "10%"]
}

自动采样条件可以被视为绝对毫秒数或相对百分比变化的数轴上的一个兴趣点。 通过设置条件,你是在要求 tachometer 尝试缩小置信区间,直到它明确地位于该条件的 一侧或另一侧。

示例条件问题
0%A 是否比 B 完全 更快或更慢?(默认
10%A 是否比 B 至少快或慢 10%?
+10%A 是否比 B 至少慢 10%?
-10%A 是否比 B 至少快 10%?
-10%, +10%(与 10% 相同)
0%, 10%, 100%A 是否比 B 完全、稍微或大幅更慢或更快?
0.5msA 是否比 B 至少快或慢 0.5 毫秒?

在以下示例中,我们设置了 --auto-sample-conditions=10%,这意味着 我们感兴趣的是知道 A 与 B 在任一方向上是否至少相差 10%。样本量会自动增加,直到置信区间 足够窄,能够将估计的差异明确地置于两个条件的 一侧或另一侧。

      <------------------------------->     n=50  X -10% X +10%
                <------------------>        n=100 ✔️ -10% X +10%
                    <----->                 n=200 ✔️ -10% ✔️ +10%

  |---------|---------|---------|---------| difference in runtime
-20%      -10%        0       +10%      +20%

n    = sample size
<--> = confidence interval for percent difference of mean runtimes
✔️    = resolved condition
X    = unresolved condition

在本示例中,根据 n=50,我们不确定 A 比 B 快或慢是否超过 10%。根据 n=100,我们已经排除了 B 比 A 超过 10% 的可能性,但我们仍不确定它是否 超过 10%。根据 n=200,我们也排除了 B 比 A 慢超过 10% 的可能性,因此我们停止采样。请注意,我们仍然不知道哪个是 绝对 更快的,我们只知道无论差异是多少,它既不快也不慢超过 10%(如果我们确实想知道,我们可以将 0 添加到我们的条件中)。

请注意,如果 实际 差异非常接近某个条件,则该条件可能永远不会满足,并且超时将会到期。

测量模式

Tachometer 支持四种时间间隔测量模式,通过 measurement 配置文件属性或 --measure 标志进行控制。

如果 measurement 是一个数组,则所有给定的测量值都将从每次页面加载中获取。来自每个页面的每个测量值都被视为其自身的基准测试。

测量可以指定一个 name 属性,用于显示其结果。

Performance API

performance.getEntriesByName API 中获取 measure、mark 或 paint 计时。请注意,此模式只能与配置文件一起使用。

例如,在你的基准测试中:

performance.mark('foo-start');
// Do some work ...
performance.mark('foo-stop');
performance.measure('foo', 'foo-start', 'foo-stop');

并且在你的配置文件中:

"benchmarks": [
  {
    "measurement": {
      "mode": "performance",
      "entryName": "foo"
    }
  }
]

支持以下性能条目类型:

  • measure: 获取两个标记之间用户定义区间的 duration。用于 测量代码中特定部分的计时。
  • mark: 获取用户定义瞬间的 startTime。用于测量 初始页面导航与代码中特定点之间的时间。
  • paint: 获取内置绘制测量的 startTime(例如 first-contentful-paint)。

回调

默认情况下,对于本地(非 URL)基准测试,或者当 --measure 标志设置为 callback 时,您的页面负责从 /bench.js 模块调用 start()stop() 函数。此模式适用于 微基准测试,或任何您希望完全控制 开始和结束时间的情况。

全局结果

--measure 标志设置为 global 时,您可以将任意 毫秒结果分配给 window.tachometerResult 全局变量。在此模式下, tachometer 将轮询直到在此处找到分配的结果。

const start = performance.now();
for (const i = 0; i < 1000; i++) {}
window.tachometerResult = performance.now() - start;

此模式适用于需要完全控制测量时间的情况,或者 由于未使用转速表的内置服务器而无法使用回调模式的情况。

或者,要在 global 测量模式下轮询任意 JS 表达式 (而非 window.tachometerResult),请将 --measurement-expression 设置为 要轮询的 JS 表达式。此选项适用于无法 轻松修改被测代码以赋值给 window.tachometerResult 但 仍能够使用 JavaScript 从页面中提取测量值的场景。

首次内容绘制 (FCP)

--measure 标志设置为 fcp,或者基准测试是 外部 URL 时,首次内容绘制 (FCP) 时间将使用 Performance Timeline API 自动从您的页面中提取。 此区间从初始导航开始,到浏览器首次 渲染任何 DOM 内容时结束。目前,只有 Chrome 支持 first-contentful-paint 性能时间线条目。在此模式下,调用 start()stop() 函数不是必需的,且没有效果。

解读结果

平均运行时间

输出的第一列是基准测试的 平均运行时间。这是 基准测试期间经过的毫秒数的 95% 置信区间。当您只运行一个基准测试时,这是唯一的输出。

差异表

当你同时运行多个基准测试时,你将获得一个 NxN 表格,汇总所有运行时间的_差异_,包括_绝对_和_相对_(百分比变化)两种形式。

在此示例截图中,我们比较了 for 个循环,每个循环以不同的迭代次数运行(1、1000、1001 和 3000):

本表告诉我们:

  • 1 次迭代比 1000 次迭代 更快 17% 到 26%。

  • 1000 次迭代比 1 次迭代 更慢 179% 到 263%。请注意, 1-vs-10001000-vs-1 之间的区别在于百分比变化计算中 选择哪个运行时作为 参考,其中 参考运行时来自标记为 "vs X"

  • 1000 次迭代和 1001 次迭代之间的差异是模糊的。我们无法判断 哪个更快,因为差异太小。1000 次迭代可能 比 1001 次迭代快最多 13%,或者慢最多 21%。

置信区间

从广义上讲,置信区间是运行时等参数的合理值范围, 置信水平(tachometer 始终固定为 95%)对应于我们对该区间 包含该参数 真实值 的置信程度。参见 Wikipedia 以获取有关置信区间的更多信息。

    <------------->   Wider confidence interval
                      High variance and/or low sample size

         <--->   Narrower confidence interval
                 Low variance and/or high sample size

 |---------|---------|---------|---------|
-1%      -0.5%       0%      +0.5%      +1%

转速表缩小置信区间的方式是增加样本 数量中心极限 定理 意味着,即使 我们拥有高方差数据,即使这些数据不呈正态 分布,随着我们采集越来越多的样本,我们将能够计算出数据真实均值的更 精确的估计值。

替换 NPM 依赖项

Tachometer 支持在您的 package.json 中替换任意 NPM 依赖项的自定义版本。这可用于将同一 基准测试与其依赖的库的一个或多个版本进行比较。

使用 benchmarks.packageVersions JSON 配置属性来指定要 替换的版本,如下所示:

{
  "benchmarks": [
    {
      "name": "my-benchmark",
      "url": "my-benchmark.html",
      "packageVersions": {
        "label": "my-label",
        "dependencies": {
          "my-package": "github:MyOrg/my-repo#my-branch"
        }
      }
    }
  ]
}

依赖项的版本可以是以下任意一种:

  • NPM 支持的任意版本范围,包括 semver 范围、git 仓库以及 本地路径。有关更多详细信息,请参阅 NPM 文档

  • 对于 monorepo,或其他 package.json 未位于 仓库根目录的 git 仓库(这是 NPM 的 git 安装功能所要求的), 您可以使用高级 git 配置对象 (schema) 来替代 NPM 版本字符串,例如:

    {
      "benchmarks": [
        {
          "name": "my-benchmark",
          "url": "my-benchmark.html",
          "packageVersions": {
            "label": "my-label",
            "dependencies": {
              "my-package": {
                "kind": "git",
                "repo": "git@github.com:MyOrg/my-repo.git",
                "ref": "my-branch",
                "subdir": "packages/my-package",
                "setupCommands": ["npm install", "npm run build"]
              }
            }
          }
        }
      ]
    }

您还可以使用 --package-version 标志从命令行指定要替换的版本,格式为 [label=]package@version。请注意,高级 git 安装配置不支持从命令行使用:

tach mybench.html \
  --package-version=my-package@1.0.0 \
  --package-version=my-label=my-package@github:MyOrg/my-repo#my-branch

当您指定要替换的依赖项时,会发生以下情况:

  1. 找到距离您的基准测试 HTML 文件最近的 package.json 文件。

  2. package.json 的副本,其中替换了新的依赖项版本, 将被写入系统的临时目录(使用 --npm-install-dir 可更改 此位置),并在该目录中运行 npm install

  3. 为每个自定义 NPM 安装启动一个单独的服务器,其中对基准测试的 node_modules/ 目录的任何 请求都从该位置提供服务。

注意:只要您指定的依赖项没有更改,并且用于安装的 tachometer 版本相同,Tachometer 就会_重用 NPM 安装目录_。若要_始终_执行新的 npm install,请设置 --force-clean-npm-install 标志。

JavaScript 模块导入

使用_裸模块说明符_(例如 import {foo} from 'mylib';)的 JavaScript 模块导入将自动转换为使用 Node 风格模块解析的浏览器兼容_路径_ 导入(例如 import {foo} from './node_modules/mylib/index.js';)。

可以使用 --resolve-bare-modules=false 标志或 resolveBareModules: false JSON 配置文件属性禁用此功能。

浏览器

浏览器无头模式FCP
chrome
firefox
safari
edge
ie

Webdriver 插件

Tachometer 附带了用于 Chrome、Safari、Firefox 和 Internet Explorer 的 WebDriver 插件。

对于 Edge,请遵循 Microsoft WebDriver 安装 文档。

如果在驱动 IE 时遇到错误,请参阅 WebDriver IE 插件文档中的 必需 配置 部分。特别是,将 "Enable Protected Mode" 设置为在所有安全区域中一致地启用或禁用,似乎可以解决 NoSuchSessionError 错误。

按需依赖

Tachometer 会按需为 Chrome、Firefox 和 IE 安装 WebDriver 插件。 当 Tachometer 首次在这些浏览器中的任何一个中运行基准测试时,如果尚未 安装,它将通过 NPM 或 Yarn 安装相应的插件。

如果您希望避免此类按需安装,可以提前使用 npm install 安装 相关软件包(分别为 chromedrivergeckodriveriedriver),例如:

npm install tachometer chromedriver

在上面的示例中,Tachometer 将检测到手动安装的 chromedriver 包,并跳过后续按需安装它的任何尝试。

Headless

如果浏览器支持,您可以通过在浏览器 JSON 配置中添加 "headless": true,或者在使用 CLI 标志时向浏览器名称追加 -headless 来以无头模式启动 (例如 --browser=chrome-headless)。

二进制路径和参数

WebDriver 会自动找到浏览器二进制文件的位置,并使用一组默认参数启动 它。

要自定义二进制路径(仅限 Chrome 和 Firefox),请在浏览器 JSON 配置中使用 binary 属性。例如,要从 macOS 上的标准位置启动 Chrome Canary:

{
  "name": "chrome",
  "binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
}

要将额外参数传递给二进制文件(仅限 Chrome 和 Firefox),请使用浏览器 JSON 配置中的 addArguments 属性。要移除 WebDriver 默认设置的参数之一(仅限 Chrome),请使用 removeArguments (参见下一节的示例)。

要配置通常从 about:config 页面设置的 Firefox 首选项,请使用浏览器 JSON 配置中的 preferences 属性。

配置文件

通常建议使用默认行为,即在启动浏览器时创建一个新的、空的 浏览器配置文件,以便个人配置文件中的状态(cookies、扩展、缓存等)不会影响基准测试 结果。

然而,在某些情况下,使用现有的浏览器配置文件可能很有用,例如 如果您正在基准测试的网页需要登录账户。

在 Chrome 和 Firefox 中,使用 profile JSON 配置选项来指定 要使用的现有配置文件。其他浏览器尚不支持此选项。

Chrome

要在 Chrome 中找到当前配置文件的位置,请访问 chrome://version 并 查找 "Profile Path"。

如果有现有的 Chrome 进程正在使用此配置文件,您必须先 终止它。您还需要关闭所有打开的标签页,或者禁用 "Continue where you left off" 启动设置,因为 tachometer 不期望找到 任何现有标签页。

如果遇到身份验证问题,您可能还需要移除 use-mock-keychain 默认参数。

例如,使用 macOS 上默认用户配置文件的标准位置:

{
  "benchmarks": [
    {
      "url": "mybench.html",
      "browser": {
        "name": "chrome",
        "profile": "/Users/<username>/Library/Application Support/Google/Chrome",
        "removeArguments": ["use-mock-keychain"]
      }
    }
  ]
}

Firefox

要在 Firefox 中查找当前配置文件位置,请访问 about:support 并查找 “Profile Folder”或“Profile Directory”。

请注意,在 Firefox 中使用 profile 选项时,配置文件目录会被复制 到临时位置。

您可能会遇到 no such file or directory, stat '.../lock' 错误,这是由于 selenium-webdriver 中的一个 bug 导致的。删除此 lock 文件应可解决该错误。

例如,使用 macOS 上用户配置文件的默认位置:

{
  "benchmarks": [
    {
      "url": "mybench.html",
      "browser": {
        "name": "firefox",
        "profile": "/Users/<username>/Library/Application Support/Firefox/Profiles/<profile-name>"
      }
    }
  ]
}

性能跟踪

一旦你确定某项内容相较于其他内容更慢或更快,调查其原因便是自然的下一步。为了协助确定原因, 考虑收集性能跟踪数据。这些跟踪数据可用于确定 浏览器在两个版本的代码之间有何不同的行为。

当在基于 Chromium 的浏览器中启用 trace 选项时,每个 tachometer 样本都会生成一个 JSON 文件,可以在 Chromium 的 about:tracing 工具中查看。在 Chromium 的 URL 栏中输入 about:tracing,点击加载,并选择 你要查看的 json 文件。查看 about:tracing 文档 页面 以 了解有关使用跟踪事件分析工具的更多信息。

要使用默认配置启用跟踪,请将 trace: true 添加到 Chromium 浏览器的配置对象中。此配置会启用跟踪,并启用一些 默认类别,并将 JSON 文件放入 当前工作目录中名为 logs 的目录。

例如:

{
  "benchmarks": [
    {
      "name": "my-benchmark",
      "url": "my-benchmark.html",
      "browser": {
        "name": "chrome",
        "trace": true
      }
    }
  ]
}

要自定义日志文件的存放位置或要跟踪的事件类别, 请按照下面的示例,向 trace 配置传递一个对象。 categories 属性是一个要收集的跟踪类别列表。logDir 是 用于存储日志文件的目录。如果它是相对路径,则相对于 当前工作目录进行解析。

{
  "benchmarks": [
    {
      "name": "my-benchmark",
      "url": "my-benchmark.html",
      "browser": {
        "name": "chrome",
        "trace": {
          "categories": ["blink", "cc", "netlog", "toplevel", "v8"],
          "logDir": "results/trace-logs"
        }
      }
    }
  ]
}

在 Chromium 浏览器中,可通过在地址栏输入 about:tracing 访问 about:tracing 来查看可用的跟踪类别。 点击右上角的“Record”(1),然后展开“Edit categories”部分(2)。在那里,列出了所有可用于跟踪的类别。 请注意,对于“Disabled by Default Categories”,在将其添加到 tachometer 配置时,需在名称前加上字符串 disabled-by-default-。 例如,要启用下方(3)所示的默认禁用的 audio 类别,请在您的 browser.trace.categories tachometer 配置中指定 disabled-by-default-audio

about:tracing app demonstrating the steps above

Tracing 也可以通过命令行标志启用。有关详细信息,请参阅文件末尾的表格。

远程控制

Tachometer 可以通过使用 Standalone Selenium Server 来控制并基准测试运行在远程机器上的浏览器,该服务器支持 macOS、 Windows 和 Linux。

如果您希望在一个平台上开发但在另一个平台上进行基准测试,或者如果您希望使用专用的基准测试计算机以获得更好的性能隔离,这可能很有用。

请注意,对于以下设置步骤,您需要知道本地和远程 机器的 IP 地址。通常,您可以在 Windows 上使用 ipconfig,在 macOS 上使用 ifconfig,在 Linux 上使用 ip 来查找这些地址。 您需要能够在这两台机器之间双向发起连接,因此如果您遇到问题,可能是 防火墙或 NAT 阻止了连接。

远程 机器上:

  1. 如果您尚未安装,请安装 Java Development Kit (JDK)

  2. seleniumhq.org 下载最新的 Standalone Selenium Server .jar 文件。

  3. seleniumhq.org 下载您打算远程控制 的浏览器的驱动程序插件。请注意,如果您 下载了插件归档文件,归档内容必须解压并 放置在下一条命令的当前工作目录中,或者放置在包含在您的 $PATH 环境变量中的目录中。

  4. 启动 Standalone Selenium Server。

    java -jar selenium-server-standalone-<version>.jar

本地 机器上:

  1. 使用 --browser 标志或 browser 配置文件属性,语法为 <browser>@<remote-url>,以告知 tachometer 用于启动浏览器的远程 Standalone Selenium Server 的 IP 地址或主机名。注意 4444 是默认端口,且 /wd/hub URL 后缀是必需的。

    --browser=chrome@http://my-remote-machine:4444/wd/hub
  2. 使用 --host 标志来配置 tachometer 内置静态服务器将监听的网络接口地址(除非您仅对不需要静态服务器的外部 URL 进行基准测试)。出于安全考虑,默认情况下,tachometer 监听 127.0.0.1,并且除非您将其更改为可从远程机器访问的 IP 地址或主机名,否则无法从远程机器访问。

  3. 如有需要,使用 --remote-accessible-host 标志来配置远程浏览器在向本地 tachometer 静态服务器发起请求时使用的 URL。默认情况下,这将匹配 --host,但在某些网络配置中可能需要不同(例如,如果机器之间由 NAT 分隔)。

配置文件

使用 --config 标志通过 JSON 配置文件来控制 tachometer。默认值与相应的命令行标志相同。

配置文件中的所有路径均相对于配置文件本身的路径。

您通常希望将 root 设置为包含您包的 node_modules/ 文件夹的目录,以便 Web 服务器能够解析裸模块导入。

例如,名为 benchmarks/foo/tachometer.json 的文件可能如下所示:

{
  "root": "../..",
  "sampleSize": 50,
  "timeout": 3,
  "autoSampleConditions": ["0%", "1%"],
  "benchmarks": [
    {
      "name": "foo",
      "url": "foo/bar.html?baz=123",
      "browser": {
        "name": "chrome",
        "headless": true,
        "windowSize": {
          "width": 800,
          "height": 600
        }
      },
      "measure": "fcp",
      "packageVersions": {
        "label": "my-branch",
        "dependencies": {
          "mylib": "github:Polymer/mylib#my-branch"
        }
      }
    }
  ]
}

在基准测试对象中使用 expand 属性,以递归方式生成同一基准测试配置的多个变体。例如,若要使用两种不同的浏览器测试同一基准测试文件,您可以使用 expand,而无需复制整个基准测试配置:

{
  "benchmarks": [
    {
      "url": "foo/bar.html",
      "expand": [
        {
          "browser": "chrome"
        },
        {
          "browser": "firefox"
        }
      ]
    }
  ]
}

这等价于:

{
  "benchmarks": [
    {
      "url": "foo/bar.html",
      "browser": "chrome"
    },
    {
      "url": "foo/bar.html",
      "browser": "firefox"
    }
  ]
}

CLI 用法

从本地文件运行基准测试:

tach foo.html

比较具有不同 URL 参数的基准测试:

tach foo.html?i=1 foo.html?i=2

在目录中运行 Benchmark index.html

tach foo/bar

对远程 URL 的首次内容绘制(First Contentful Paint)时间进行基准测试:

tach http://example.com
标志 -默认值描述
--helpfalse显示文档
--root./搜索基准测试的根目录
--host127.0.0.1在哪个主机上运行
--port8080, 8081, ..., 0在哪个端口上运行(逗号分隔的偏好列表,0 表示随机)
--config(none)JSON 配置文件的路径(details
--package-version / -p(none)指定要替换的 NPM 包版本(details
--browser / -bchrome自动模式下要启动的浏览器,以逗号分隔(chrome, firefox, safari, edge, ie)(details
--window-size1024,768将创建的浏览器窗口的“宽度,高度”(像素)
--sample-size / -n50运行每个基准测试的最小次数(details
--auto-sample-conditions0%自动采样时尝试解决的差异程度("N%" 或 "Nms",以逗号分隔)(details
--timeout3自动采样花费的最大分钟数(details)
--measurecallback要测量的时间间隔(callback, global, fcp)(details)
--measurement-expressionwindow.tachometerResultmeasure 设置设为 global 时,用于轮询以获取测量结果的页面 JS 表达式
--remote-accessible-hostmatches --host当通过远程 WebDriver 连接使用浏览器时,这些浏览器应使用的访问本地 tachometer 服务器的 URL(details)
--npm-install-dirsystem temp dir安装自定义软件包版本的位置。(details)
--force-clean-npm-installfalse使用自定义软件包版本时,始终执行全新的 NPM 安装。(details)
--csv-filenone将统计摘要保存到此 CSV 文件。
--csv-file-rawnone将原始样本测量值保存到此 CSV 文件。
--json-filenone将结果保存到此 JSON 文件。
--manualfalse不自动运行,仅显示 URL 并收集结果
--tracefalse启用性能跟踪(details)
--trace-log-dir${cwd}/logs放置跟踪日志文件的目录。默认为 ${cwd}/logs
--trace-catdefault categories要记录的跟踪类别。应为逗号分隔的类别名称字符串