基准测试

本章节包含所有 QRCode 包的性能基准测试报告。


🔬 交互式性能比较

使用下面的工具自定义比较不同包的性能:

🔬 交互式性能比较

单条生成性能对比 (ops/s)

04,6309,25913,88918,518短文本中等文本长文本Unicode
Node.js
Bun
Rust (qrcode-rust)
测试项Node.js (ops/s)Bun (ops/s)Rust (ops/s)胜出
短文本12,07814,28718,518🦀 Rust
中等文本10,58014,91017,793🦀 Rust
长文本3,0435,9246,514🦀 Rust
Unicode8,55314,5888,333🥟 Bun

📊 快速统计

Node.js 最快
短文本生成
12,078 ops/s
Bun 最快
纠错级别 L
27,640 ops/s
qrcode-rust 最快
SVG 输出
27,855 ops/s
qrcode-fast 最快
SVG 输出
95,238 ops/s

🚀 性能提升

🚀 性能提升总结

@veaba Rust 包相对于其他实现的性能提升:

vs kennytm-qrcode
8-10x
qrcode-rust
|
15-25x
qrcode-fast
vs Node.js
2-3x
qrcode-rust
|
4-6x
qrcode-fast
vs Bun
1.5-2x
qrcode-rust
|
2-4x
qrcode-fast

✅ SVG 验证

✅ SVG 验证结果

使用 bench/rust-tools 验证工具对生成的 SVG 进行验证:

✅ @veaba/qrcode-rust
生成的 SVG 可通过标准二维码扫描器正确解码
✅ @veaba/qrcode-fast
生成的 SVG 可通过标准二维码扫描器正确解码(极致性能版)
✅ kennytm-qrcode
社区参考实现,验证通过
验证命令: cargo run --release --features validation --bin validate-qr -- "Hello World"

测试报告

后端包性能比较

比较 @veaba/qrcode-node@veaba/qrcode-bun 的性能差异。

主要发现:

  • Bun 在单条生成上比 Node.js 快 19% - 81%
  • Bun 在批量生成上比 Node.js 快 43% - 171%
  • Bun 在 SVG 输出上比 Node.js 快 36% - 44%

前端包性能比较

比较 @veaba/qrcode-js@veaba/qrcode-wasm 的性能特点。

主要内容:

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

后端 PK 对比

多包对比测试,包含 Node.js、Bun、Rust 实现。

主要发现:

  • @veaba/qrcode-fast (Rust) 在单条生成上最快
  • @veaba/qrcode-bun 在批量生成上表现优秀
  • @veaba/qrcode-rustkennytm-qrcode 快 8-10 倍
  • @veaba/qrcode-fastkennytm-qrcode 快 15-25 倍

Rust 性能比较

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

主要发现:

  • qrcode-rust 单条生成: ~54 µs (kennytm: ~455 µs) - 快 8.4x
  • qrcode-fast 单条生成: ~25 µs (kennytm: ~455 µs) - 快 17.8x
  • qrcode-fast 批量 100: ~2.1 ms (kennytm: ~34.1 ms) - 快 16.3x
  • 所有包均验证通过 ✅

SVG 生成基准测试

专门的 SVG 生成性能测试,包含验证结果。

主要发现:

  • @veaba/qrcode-fastkennytm-qrcode20-22 倍
  • @veaba/qrcode-rustkennytm-qrcode8-10 倍
  • 验证状态: 所有包在所有测试用例上均验证通过 ✅
  • 格式信息修复完成 (2026-02-02)

测试环境

  • 平台: Windows
  • Node.js: v20.19.4
  • Bun: 1.3.0
  • Rust: rustc 1.89.0

运行基准测试

# 运行所有后端基准测试
pnpm run benchmark:backend

# 运行 Node.js 基准测试
pnpm run benchmark:node

# 运行 Bun 基准测试
pnpm run benchmark:bun

# 运行 Rust 基准测试
pnpm run benchmark:rust

# 运行前端测试
pnpm run test:browser

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

# 运行三者对比测试
cd packages/qrcode-rust
cargo bench --bench comparison_bench

数据文件

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

  • /docs/public/benchmark_node_result.json - Node.js 测试结果
  • /docs/public/benchmark_bun_result.json - Bun 测试结果
  • /docs/public/backend_benchmark_pk.json - PK 完整对比结果
  • /docs/public/backend_benchmark_pk_summary.json - PK 摘要结果
  • /docs/public/benchmark_svg_rust.json - SVG 生成测试原始数据

最后更新: 2026-02-02 (添加 qrcode-fast 对比,格式信息修复完成)