如何使用 Bencher 追踪基准测试


追踪你的基准最简单的方法就是 bencher run 命令行子命令。 对于更深入的解释,请查看 基准测试概览。 下面是一个bencher run命令行子命令的示例,用于追踪在一个合适命名为feature-branch的功能分支上的基准:

bencher run \
--project save-walter-white \
--token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2NzQwNjA3NTAsImlhdCI6MTY3MTQ2ODc1MCwiaXNzIjoiYmVuY2hlci5kZXYiLCJzdWIiOiJzYXVsQGJldHRlcmNhbGxzYXVsLmNvbSIsIm9yZyI6bnVsbH0.CABcvWlPobAHs7wsdR6wX5p0R2jaCd7RmpsnMp5pwEc \
--adapter json \
--if-branch feature-branch \
--else-if-branch main \
--else-branch \
--testbed localhost \
--err \
"bencher mock"`
  1. 项目必须已经存在。设置 --project 标志或者 BENCHER_PROJECT 环境变量为项目的简写或 UUID。(例如: --project save-walter-white
  2. API 令牌必须已经存在。设置 --token 标志或者 BENCHER_API_TOKEN 环境变量为 API 令牌。(例如: --token ...
  3. 选择设置: 设置 --adapter 标志或 BENCHER_ADAPTER 环境变量为所需的适配器名称。如果没有设置则会使用 magic 适配器。查看 基准测试马具适配器 获得全部概览。(例如: --adapter json
  4. 有多种方式可以设置项目分支。查看 分支选择 获得全部概览。
    1. 使用已经存在的当前分支。(例如: --if-branch feature-branch
    2. 如果目标分支已经存在则创建一个目标分支数据的副本。(例如: --else-if-branch main
    3. 否则,使用 --if-branch 提供的名称创建新分支,这里会是 feature-branch。 (例如: --else-branch)
  5. 选择设置: 设置 --testbed 标志或者 BENCHER_TESTBED 环境变量为 Testbed 的简写或者 UUID。Testbed 必须已经存在。如果没有设置,那么默认的 localhost Testbed 将会被使用。(例如: --testbed localhost
  6. 如果生成一个警告就让命令执行失败。为了警告被生成,一项 阈值 必须已经存在。(例如: --err
  7. 运行你的基准并从结果中生成一份报告。(例如: "bencher mock"

相对基准

相对基准在两个提交旁边互相对比运行。 这在处理有噪音的 CI/CD 环境时非常有用, 运行中所可用资源在不同的运行间可能变化很大。 下面是一个bencher run命令行子命令的示例,用于在一个合适命名为feature-branch的功能分支上执行相对基准:

git checkout feature-branch
export FEATURE_BRANCH=feature-branch-$(git rev-parse --short HEAD)
export BENCHER_API_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2NzQwNjA3NTAsImlhdCI6MTY3MTQ2ODc1MCwiaXNzIjoiYmVuY2hlci5kZXYiLCJzdWIiOiJzYXVsQGJldHRlcmNhbGxzYXVsLmNvbSIsIm9yZyI6bnVsbH0.CABcvWlPobAHs7wsdR6wX5p0R2jaCd7RmpsnMp5pwEc
git checkout main
bencher run \
--project save-walter-white \
--if-branch "$FEATURE_BRANCH" \
--else-branch \
--testbed localhost \
--iter 3 \
"bencher mock"
git checkout feature-branch
bencher threshold create \
--project save-walter-white \
--branch "$FEATURE_BRANCH" \
--testbed localhost \
--measure latency \
--test t \
--upper-boundary 0.95
bencher run \
--project save-walter-white \
--branch "$FEATURE_BRANCH" \
--testbed localhost \
--iter 3 \
--fold min \
--err \
"bencher mock"
  1. 检出功能分支。(例如: feature-branch
  2. 创建一个环境变量,将功能分支的名称和短的 git 提交 ID 连接起来。这是重要的!它保证了每次运行都会创建一个新的分支。
  3. 检出目标分支。(例如: main
  4. 对目标分支运行 bencher run:
    1. 给定的分支将不存在。(例如: --if-branch "$FEATURE_BRANCH"
    2. 因此,它会被创建。(例如: --else-branch
    3. 运行基准三次。(例如: --iter 3
  5. 检出功能分支。(例如: feature-branch
  6. 为功能分支创建一个 阈值:
    1. 分支是功能分支和添加的 git 提交 ID。(例如: --branch "$FEATURE_BRANCH"
    2. Testbed 在本地运行。(例如: --testbed localhost
    3. 基准的度量为延迟。(例如: --measure latency
    4. 指标少于30,使用一个 Student’s t-检验。(例如: --test t
    5. 设置一个 95.0% 的右边界,因为更大的延迟表示表现出回退。(例如: --upper-boundary 0.95
  7. 对功能分支运行 bencher run:
    1. 分支将存在,因为刚刚被创建。(例如: --branch "$FEATURE_BRANCH"
    2. 运行测试三次。(例如: --iter 3
    3. 将所有三个度量内折为最小值。(例如: --fold min
    4. 如果 阈值 生成了警告则让命令执行失败。(例如: --err


🐰 恭喜!你已经学会了如何使用 Bencher 追踪基准测试!🎉


添加 Bencher 到 GitHub Actions ➡

添加 Bencher 到 GitLab CI/CD ➡

🤖 该文档由 OpenAI GPT-4 自动生成。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.