本基准测试对比了以下 Rust QRCode 生成库的 SVG 生成性能:
| 包 | 描述 | 状态 |
|---|---|---|
kennytm-qrcode |
社区流行的 Rust QRCode 库(参考基准) | ✅ 验证通过 |
@veaba/qrcode-rust |
纯 Rust 实现,功能完整 | ✅ 验证通过 |
@veaba/qrcode-fast |
极致性能优化版本,功能完整 | ✅ 验证通过 |
最后更新: 2026-02-02
| 名称 | 文本内容 | 版本 | 模块数 |
|---|---|---|---|
| Simple | "Hello World" | 1 | 21x21 |
| Complex | "Test QR Code 123" | 2 | 25x25 |
| URL | "https://github.com/veaba/qrcodes" | 3 | 29x29 |
| Long | "Email: test@example.com | Phone: +1-234-567-8900..." | 6 | 37x37 |
| 测试用例 | kennytm (µs) | qrcode-rust (µs) | qrcode-fast (µs) | rust 加速比 | fast 加速比 |
|---|---|---|---|---|---|
| Simple | ~230 | ~54 | ~25 | 4.3x | 9.2x |
| Complex | ~350 | ~41 | ~17 | 8.5x | 20.6x |
| URL | ~470 | ~55 | ~23 | 8.5x | 20.4x |
| Long | ~870 | ~90 | ~40 | 9.7x | 21.8x |
| 测试用例 | kennytm | qrcode-rust | qrcode-fast |
|---|---|---|---|
| Simple | ✅ | ✅ | ✅ |
| Complex | ✅ | ✅ | ✅ |
| URL | ✅ | ✅ | ✅ |
| Long | ✅ | ✅ | ✅ |
说明:
@veaba/qrcode-fast 在所有测试用例中表现最佳:
kennytm-qrcode 快 9-22 倍@veaba/qrcode-rust 快 2-3 倍所有包在所有测试用例上均验证通过:
kennytm-qrcode: 社区成熟实现,稳定可靠qrcode-rust: 功能完整,与 kennytm 参考实现保持一致qrcode-fast: 极致性能优化,功能完整| 包 | Simple | Complex | URL | Long |
|---|---|---|---|---|
| kennytm | ~4.2 KB | ~6.0 KB | ~8.3 KB | ~13.4 KB |
| qrcode-rust | ~4.3 KB | ~6.2 KB | ~8.5 KB | ~13.6 KB |
| qrcode-fast | ~4.1 KB | ~5.6 KB | ~6.9 KB | ~10.7 KB |
三个包生成的 SVG 文件大小相当,qrcode-fast 在文件大小上也有轻微优势。
测试完成后,结果会保存到以下位置:
docs/bench/benchmark-output/*.svgdocs/public/benchmark_svg_rust.json| 场景 | 推荐 | 原因 |
|---|---|---|
| 极致性能 | @veaba/qrcode-fast |
最快的生成速度,比 kennytm 快 15-25 倍 |
| 通用场景 | @veaba/qrcode-rust |
功能完整,性能优秀,比 kennytm 快 8-10 倍 |
| 兼容性优先 | kennytm-qrcode |
社区成熟,文档丰富 |
| WASM 场景 | @veaba/qrcode-rust 或 @veaba/qrcode-fast |
两者都支持 WASM |
| 文本长度 | 推荐包 | 说明 |
|---|---|---|
| < 20 字符(版本 1-2) | @veaba/qrcode-fast |
性能最佳 |
| 20-50 字符(版本 3-5) | @veaba/qrcode-fast 或 @veaba/qrcode-rust |
两者都验证通过 |
| > 50 字符(版本 6+) | @veaba/qrcode-fast |
性能最佳,验证通过 |
所有包在所有纠错级别(L/M/Q/H)上均验证通过,可放心使用。
在早期版本中,@veaba/qrcode-rust 和 @veaba/qrcode-fast 在某些复杂文本上验证失败,错误类型为 DataEcc(Reed-Solomon 纠错码错误)。
格式信息放置修复
Mask Pattern 修复
(row + col) % 2 == 0数据自动生成的基准测试报告