基准测试

本章节汇总 QRCode 各实现的可复现性能基准测试。

SVG 生成性能对比

⏳ 加载中…

📊 性能数据总览

Rust 实现(权威来源)

来源:benchmark_speedup_verified.json

对比速度提升
@veaba/qrcode-fast vs kennytm-qrcode11x - 19x
@veaba/qrcode-rust vs kennytm-qrcode6x - 9x
@veaba/qrcode-fast vs @veaba/qrcode-rust1.7x - 2.2x
  • 平台: Windows x64
  • Rust: rustc 1.89.0
  • 测量: 三方端到端 SVG 生成,同机同进程,每用例预热 20 次 + 100 次取平均
  • 正确性: 每个用例的产物都经 resvg 渲染 + rqrr 独立解码验证

前端包

@veaba/qrcode-js(纯 TypeScript)与 @veaba/qrcode-wasm(WebAssembly)对比见 前端包性能比较。


测试报告

后端 PK 对比

Rust 三方(qrcode-fast / qrcode-rust / kennytm-qrcode)的端到端 SVG 性能对比, 数据来源 benchmark_speedup_verified.json。

  • @veaba/qrcode-fast 比 kennytm-qrcode 快 9-19 倍
  • @veaba/qrcode-rust 比 kennytm-qrcode 快 6-9 倍
  • @veaba/qrcode-fast 比 @veaba/qrcode-rust 快 1.5-2.2 倍

前端包性能比较

比较 @veaba/qrcode-js 和 @veaba/qrcode-wasm:

  • 纯 TypeScript vs WASM 实现的对比
  • 包体积和启动速度分析
  • 使用场景建议

Rust 性能比较

比较 @veaba/qrcode-rust、@veaba/qrcode-fast 与流行的 kennytm-qrcode 库。

主要发现(来源 benchmark_speedup_verified.json):

  • qrcode-rust 端到端 SVG: 18.5-130.2 µs 区间,比 kennytm 快 6-9x
  • qrcode-fast 端到端 SVG: 18.5-64.4 µs 区间,比 kennytm 快 9-19x
  • qrcode-fast 比 qrcode-rust 快 1.5-2.2x

SVG 生成基准测试

专门的 SVG 生成性能测试,数据来自 benchmark_svg_rust.json。

该页另含一节五方对比(Node / Bun / Rust):统一纠错级别 M 后测量 qrcode-fast / qrcode-rust / qrcode-bun / qrcode-node / kennytm-qrcode。 该节为独立测量,不写入 docs/public/,也不与上述任何口径混用。


运行基准测试

# 运行 Rust 权威基准(三方端到端 SVG)
cd bench/rust-tools
cargo run --release --bin verify-speedup

# 使用 rust-tools 验证 SVG 可解码性
cd bench/rust-tools
cargo run --release --features validation --bin validate-qr -- "你的文本"

# 全长度解码边界探测
cd bench/rust-tools
cargo run --release --features validation --bin scan-max

# 运行包内 Criterion 微基准(口径与 verify-speedup 不同)
cd packages/qrcode-rust
cargo bench --bench comparison_bench

数据文件

基准测试的原始数据文件保存在 docs/public/:

文件覆盖范围单位状态
benchmark_speedup_verified.jsonRust 三方端到端 SVGµs + 倍率✅ 权威来源
benchmark_svg_rust.jsonRust 三方 SVG-only harnessµs⚠️ 旧口径,部分用例 valid: false,勿与权威文件混用

最后更新: 2026-03-20(移除 Node.js / Bun 对比图表与其结论:该对比同时变动运行时与实现两个变量,且与仓库内其他抽样结论相反)