@ benchsdk/ runner (韩语)
作者基准框架 *.bench.ts 文档和运行基准工作者。 它通过下列途径向基准平台报告: @benchsdk/api· ; @benchsdk/client 是一种倒向相容性再出口shim.
它提供的东西
defineBenchmarkConfig编号 :defineTaskA级*.bench.ts文件导出完全有两点: a 配置 (单位:千美元)defineBenchmarkConfig键+participants+ 可选onComplete钩子)和 a 任务 (单位:千美元)defineTask重复一次的工作量。 没有"模":从"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出"出iterations, (中文(简体) ),concurrency,以及staggerDelayMs把手,和groupBy(单位:千美元)'participant'|'round')选择整个参与者的订单.bench run <file>——CLI入站点. 它输入模块,读取它的config财务报告和审定财务报表task,应用 CLI 覆盖,并驱动运行。 基准文件声明;他们从不给跑者打电话.bench check <file>——验证环境变量,API连通性,参与者可用性,运行前评分权重.runBenchmarkWorker(options)——一发接线员辅助操作员,操作单一参与者的工人而无*.bench.ts文档.TaskError编号 :NoAvailableParticipantsError- 结构错误:抛出TaskError从附加代码/数据/预计量步骤的任务;bench run治疗NoAvailableParticipantsError(每个参与者都潜出) 作为一个干净的不开放出口.
安装
pnpm add @benchsdk/runner @benchsdk/client
使用量
基准文件导出a config (单位:千美元) task - 没有别的了:
import { defineBenchmarkConfig, defineTask } from '@benchsdk/runner';
import { providers } from './providers.js';
import { writeLegacyResults } from './legacy-results.js';
export const config = defineBenchmarkConfig({
benchmarkSlug: 'sandbox-tti-local',
benchmarkName: 'Sandbox TTI (local)',
iterations: 100, // total tasks per participant
concurrency: 1, // 1 = sequential, N = burst, N + staggerDelayMs = staggered
participants: providers,
// Aggregate post-run work (the one thing a single task can't see) lives here.
onComplete: (outcome) => writeLegacyResults(outcome.participants),
});
export const task = defineTask(async ({ participant, step, measure, log }) => {
log('creating sandbox', { level: 'info', meta: { participant: participant.name } });
// Named steps via `ctx.step`: values flow between steps with closures and
// cleanup runs in a `finally`. Each step is a first-class platform record
// with its own timing/status. A step returning `{ stdout, stderr, exitCode }`
// writes that output to the worker log unless `captureOutput: false` is passed.
const sandbox = await step('create', () => participant.createCompute().sandbox.create());
try {
const t0 = performance.now();
await step('exec', () => sandbox.runCommand('node -v'));
measure({ ttiMs: performance.now() - t0 }); // metrics → the platform
} finally {
await step('destroy', () => sandbox.destroy());
}
});
用 CLI 运行它( 旗子覆盖了配置键 ):
bench run benchmarks/sandbox/sandbox-tti.bench.ts --iterations 100 --concurrency 20 --provider e2b,modal
bench run 需要平台认证- BENCHMARKS_PLATFORM_API_KEY, (中文(简体) ), BENCHMARKS_PLATFORM_TOKEN,或通过 bench auth login 即使是为了 --dry-run 编号 : --no-ingest 编号 : BENCHSDK_NO_INGEST=1;这些旗帜只跳过上传,不会跳过认证.
要装入没有构建步骤的 TypeScript 基准, 请在 TS 加载器下运行 CLI :
tsx node_modules/@benchsdk/runner/dist/bin.js run sandbox-tti.bench.ts
背景频道
在一项任务中,背景暴露出三个不同的渠道:
step(name, fn, options?)——返回fn'对您的代码的值(步骤之间的线性活对象);在平台上记录步骤的时间/状态. 返回值从不自动记录为数据。 设定captureOutput: false以返回结果形状对象(stdout, (中文(简体) ),stderr, (中文(简体) ),exitCode,.)没有写在工人日志上. 使用parallelInvocations(原为concurrency以平行方式多次引用一步.measure(data)——有明确尺度的通道. 内召入一step()它合并到该步骤的数据中;在任务顶层调用它合并到任务记录中. 没有明确步骤的任务记录为一项隐含'task'脚步进行测量.log(message, metaOrOptions?)——人可读取的对运行时间的叙述.metaOrOptions可以是元数据 JSON 对象或{ level: 'debug' | 'info' | 'warn' | 'error', meta?: JsonObject }。 。 。 .
平台数据命令
bench 是一个统一的CLI。 再说 bench run,它可以认证和查询平台:
bench check <file.bench.ts>
bench auth login
bench benchmarks list
bench runs list <slug>
bench results <slug> --run <runId>
bench artifacts list <slug> <runId>
bench export <slug> --out ./exports
见 长椅-cli技能 用于完整的 CLI 参考、 OAuth 设备编码登录、 配置/证书文件以及 CI 使用.
实例和完整指南
关于逐个编写指南和涵盖每个能力的可操作实例,见 WRITING_BENCHMARKS.md 编辑 examples/ 目录.
许可证
麻省理工学院