菜单

基准测试

相关源文件

本文档介绍了 Deno 内置的基准测试系统,包括基准测试的发现、执行、测量和报告。该基准测试系统提供具有统计分析的性能测量能力,并支持多种输出格式,包括控制台和 JSON 报告。

有关测试框架的信息,请参阅 测试框架。有关开发工具的概述,请参阅 开发工具

架构概述

Deno 的基准测试系统遵循事件驱动架构,采用基于 Worker 的执行方式和灵活的报告器系统来格式化输出。

核心基准测试系统架构

来源: cli/tools/bench/mod.rs429-498 cli/ops/bench.rs25-41 cli/tools/bench/mod.rs152-284

核心数据结构

基准测试系统使用几个关键的数据结构来表示基准测试元数据、结果和执行状态。

基准测试元数据和结果

结构目的关键字段
BenchDescription基准测试元数据id, name, origin, baseline, group, ignore, only, warmup
BenchStats性能测量n, min, max, avg, p75, p99, p995, p999, high_precision
BenchResult执行结果Ok(BenchStats)Failed(Box<JsError>)
BenchPlan执行计划total, origin, used_only, names
BenchReport最终结果摘要total, failed, failures, measurements

事件系统

来源: cli/tools/bench/mod.rs78-87 cli/tools/bench/mod.rs89-103 cli/tools/bench/mod.rs104-129

基准测试发现与执行

文件发现流程

使用特定的命名模式和文件扩展名来发现基准测试文件

来源: cli/tools/bench/mod.rs404-427 cli/tools/bench/mod.rs418-427

执行流程

基准测试执行遵循从发现到报告的结构化流程

来源: cli/tools/bench/mod.rs287-402 cli/tools/bench/mod.rs181-284

操作桥接

操作系统将 JavaScript 基准测试代码与 Rust 执行基础设施连接起来。

基准测试操作接口

来源: cli/ops/bench.rs95-134 cli/ops/bench.rs135-144 cli/ops/bench.rs146-152

报告系统

报告系统为基准测试结果提供了多种输出格式。

报告器架构

报告器类型输出格式用例
ConsoleReporter人类可读的控制台输出交互式开发
JsonReporter结构化 JSONCI/CD 集成,数据分析

报告生成流程

来源: cli/tools/bench/mod.rs142-150 cli/tools/bench/mod.rs322-389

文件监视以实现持续基准测试

基准测试系统通过文件监视功能支持持续执行。

监视模式架构

来源: cli/tools/bench/mod.rs500-641 cli/util/file_watcher.rs247-268

与构建系统的集成

基准测试系统与 Deno 更广泛的构建和模块系统集成,以进行依赖管理和类型检查。

依赖和模块解析

  • 使用 CheckSpecifiersOptions 对基准测试模块进行类型检查
  • CliMainWorkerFactory 集成以创建 Worker
  • 支持 PermissionsContainer 进行安全控制
  • 利用 ModuleGraphCreator 进行监视模式下的依赖分析

来源: cli/tools/bench/mod.rs466-476 cli/tools/bench/mod.rs568-575