qrcode-rust - 功能完整的 Rust QRCode 实现qrcode-fast - 极致性能优化版本kennytm-qrcode - 流行的 Rust QRCode 库(作为基准)@veaba 包相对于 kennytm-qrcode 的性能提升:
| 功能 | qrcode-rust | qrcode-fast | kennytm-qrcode |
|---|---|---|---|
| SVG 输出 | ✓ | ✓ | ✓ |
| PNG 输出 | ✓ | ✓ | ✓ |
| 字符串输出 | ✓ | ✓ | ✓ |
| 自定义样式 | 完整 | 完整 | 有限 |
| 纠错级别 L/M/Q/H | ✓ | ✓ | ✓ |
| 异步支持 | ✓ | ✓ | ✗ |
| WASM 支持 | ✓ | ✓ | ✗ |
| Node.js 绑定 | 计划中 | 计划中 | ✗ |
| 性能优化 | 优秀 | 极致 | 良好 |
基于 criterion 基准测试框架的最新结果(2026-02-02):
| 测试项 | qrcode-rust | qrcode-fast | kennytm-qrcode | rust 提升 | fast 提升 |
|---|---|---|---|---|---|
| 单条生成 | ~54.4 µs | ~25.5 µs | ~454.6 µs | 8.4x | 17.8x |
| 批量生成 (100条) | ~4.21 ms | ~2.09 ms | ~34.12 ms | 8.1x | 16.3x |
| SVG 生成 | ~35.9 µs | ~10.5 µs | ~4.1 µs* | 0.1x | 0.4x |
| 纠错级别 L | ~30.7 µs | ~16.0 µs | ~323.9 µs | 10.6x | 20.3x |
| 纠错级别 M | ~34.1 µs | ~16.3 µs | ~324.1 µs | 9.5x | 19.9x |
| 纠错级别 Q | ~63.6 µs | ~17.0 µs | ~327.8 µs | 5.2x | 19.3x |
| 纠错级别 H | ~44.9 µs | ~19.8 µs | ~491.1 µs | 10.9x | 24.8x |
*注:kennytm-qrcode 的 SVG 生成使用了不同的渲染方式,直接输出字符而不是 SVG XML,所以看起来更快,但功能不同
| 文本长度 | qrcode-rust | qrcode-fast | kennytm-qrcode | rust 提升 | fast 提升 |
|---|---|---|---|---|---|
| 短文本 (12 chars) | ~33.7 µs | ~16.0 µs | ~204.2 µs | 6.1x | 12.8x |
| 中等文本 (36 chars) | ~56.4 µs | ~25.5 µs | ~471.6 µs | 8.4x | 18.5x |
| 长文本 (98 chars) | ~153.5 µs | ~65.2 µs | ~1050.9 µs | 6.8x | 16.1x |
使用 rust-tools 验证工具对生成的 SVG 进行验证:
验证结论:
qrcode-rust 生成的二维码 SVG 可以通过标准二维码扫描器正确解码,内容匹配qrcode-fast 生成的二维码也可正确解码经过详细调试和修复,qrcode-rust 和 qrcode-fast 现在与 kennytm-qrcode 在以下方面保持一致:
| 测试内容 | 结果 | 说明 |
|---|---|---|
| "Hello World" (v1) | ✅ 完全匹配 | 模块矩阵与 kennytm 完全一致 |
| "Test QR Code 123" (v2) | ✅ 验证通过 | 使用 mask pattern 0,可正确扫描 |
| 格式信息 | ✅ 正确放置 | 水平和垂直格式信息位置与 kennytm 一致 |
| Mask Pattern | ✅ 正确应用 | Mask pattern 0: (row + col) % 2 == 0 |
格式信息放置修复
Mask Pattern 修复
(row + col) % 2 == 0| 场景 | 推荐包 | 原因 |
|---|---|---|
| 通用场景 | qrcode-rust |
功能完整,性能优秀,比 kennytm 快 8-10 倍 |
| 极致性能 | qrcode-fast |
比 kennytm 快 15-25 倍,功能完整 |
| 兼容性优先 | kennytm-qrcode |
社区成熟,文档丰富 |
| WASM 场景 | qrcode-rust 或 qrcode-fast |
两者都支持 WASM |
基准测试的详细报告生成在:
target/criterion/ - Criterion 基准测试报告可以使用浏览器打开查看图表和详细分析:
使用 Criterion.rs 进行基准测试:
"https://a.co" (12 字符)"https://github.com/veaba/qrcodes" (36 字符)位于 bench/rust-tools,提供以下功能:
validate-qr - 生成并验证二维码compare_matrix - 对比模块矩阵与 kennytmcompare_matrix_v1 - 对比版本 1 的矩阵数据文件: backend_benchmark_pk.json | backend_benchmark_pk_summary.json
测试代码: packages/qrcode-rust/benches/comparison_bench.rs
最后更新: 2026-02-02 (添加 qrcode-fast 对比,格式信息修复完成)