后端基准测试报告

测试环境

  • 平台: Windows
  • Node.js: v20.19.4
  • Bun: 1.3.0
  • 测试时间: 2026-02-02

测试包

  • @veaba/qrcode-node - Node.js 运行时实现
  • @veaba/qrcode-bun - Bun 运行时实现

📊 可视化对比

单条生成性能对比

单条 QRCode 生成性能 (ops/s)

05,18010,35915,53920,718短文本中等文本长文本Unicode
Node.js
Bun

批量生成性能对比

批量 QRCode 生成性能 (ops/s)

04,7509,50014,25019,00010 条100 条1000 条
Node.js
Bun

输出格式性能对比

不同输出格式性能 (ops/s)

05,30910,61815,92621,235SVGStyled SVG
Node.js
Bun

纠错级别性能对比

不同纠错级别性能 (ops/s)

07,93515,87023,80431,739L (低)M (中)Q (较高)H (高)
Node.js
Bun

📋 详细数据对比

测试项Node.js (ops/s)Bun (ops/s)胜出
单条生成 (short)15,14818,071🥟 Bun
单条生成 (medium)13,72320,718🥟 Bun
单条生成 (long)3,9327,132🥟 Bun
单条生成 (unicode)10,64817,586🥟 Bun
批量生成 (10)13,05018,710🥟 Bun
批量生成 (100)6,50016,900🥟 Bun
批量生成 (1000)7,00019,000🥟 Bun
SVG 输出14,74921,235🥟 Bun
Styled SVG8,40911,439🥟 Bun
PNG Buffer3,472-🟢 Node.js
纠错级别 L10,83831,739🥟 Bun
纠错级别 M10,98624,932🥟 Bun
纠错级别 Q10,86223,829🥟 Bun
纠错级别 H15,43124,058🥟 Bun
异步单条15,65615,768🥟 Bun

⚡ 性能计算器

使用下面的计算器,根据您的 QRCode 生成数量预估不同运行时的性能表现:

⚡ 性能计算器

Node.js
6.60 ms
15,148 ops/s
Bun
5.53 ms
18,071 ops/s

性能分析

单条生成性能

测试项 Node.js Bun 胜出 优势
短文本 (short) 15,148 18,071 🥟 Bun +19.3%
中等文本 (medium) 13,723 20,718 🥟 Bun +51.0%
长文本 (long) 3,932 7,132 🥟 Bun +81.4%
Unicode 文本 10,648 17,586 🥟 Bun +65.2%

结论: Bun 在单条生成性能上全面领先 Node.js,尤其在处理中等文本时优势最明显。

批量生成性能

测试项 Node.js Bun 胜出 优势
10 条 13,050 18,710 🥟 Bun +43.4%
100 条 6,500 16,900 🥟 Bun +160.0%
1000 条 7,000 19,000 🥟 Bun +171.4%

结论: Bun 在批量生成场景下性能优势巨大,比 Node.js 快 43% - 171%。

输出格式性能

测试项 Node.js Bun 胜出 优势
SVG 输出 14,749 21,235 🥟 Bun +44.0%
Styled SVG 8,409 11,439 🥟 Bun +36.0%
PNG Buffer 3,472 - 🟢 Node.js -

结论: Bun 在 SVG 输出格式上明显快于 Node.js。

纠错级别性能

纠错级别 Node.js Bun 胜出 优势
L (低) 10,838 31,739 🥟 Bun +192.8%
M (中) 10,986 24,932 🥟 Bun +126.9%
Q (较高) 10,862 23,829 🥟 Bun +119.4%
H (高) 15,431 24,058 🥟 Bun +55.9%

结论: 所有纠错级别下 Bun 都显著优于 Node.js,尤其在 L 级别优势最大。

异步生成性能

测试项 Node.js Bun 胜出 优势
异步单条生成 15,656 ops/s 15,768 ops/s 🥟 Bun +0.7%

详细数据

@veaba/qrcode-node 详细结果

{
  "单条生成 (short)": { "ops": 15148, "avgTime": "0.0660 ms" },
  "单条生成 (medium)": { "ops": 13723, "avgTime": "0.0729 ms" },
  "单条生成 (long)": { "ops": 3932, "avgTime": "0.2543 ms" },
  "单条生成 (unicode)": { "ops": 10648, "avgTime": "0.0939 ms" },
  "批量生成 (10)": { "ops": 13050, "avgTime": "0.7663 ms" },
  "批量生成 (100)": { "ops": 6500, "avgTime": "15.4275 ms" },
  "批量生成 (1000)": { "ops": 7000, "avgTime": "146.0795 ms" },
  "SVG 输出": { "ops": 14749, "avgTime": "0.0678 ms" },
  "Styled SVG": { "ops": 8409, "avgTime": "0.1189 ms" },
  "PNG Buffer": { "ops": 3472, "avgTime": "0.2881 ms" },
  "异步单条": { "ops": 15656, "avgTime": "0.0639 ms" }
}

@veaba/qrcode-bun 详细结果

{
  "单条生成 (short)": { "ops": 18071, "avgTime": "0.0553 ms" },
  "单条生成 (medium)": { "ops": 20718, "avgTime": "0.0483 ms" },
  "单条生成 (long)": { "ops": 7132, "avgTime": "0.1402 ms" },
  "单条生成 (unicode)": { "ops": 17586, "avgTime": "0.0569 ms" },
  "批量生成 (10)": { "ops": 18710, "avgTime": "0.5344 ms" },
  "批量生成 (100)": { "ops": 16900, "avgTime": "5.9143 ms" },
  "批量生成 (1000)": { "ops": 19000, "avgTime": "51.7963 ms" },
  "SVG 输出": { "ops": 21235, "avgTime": "0.0471 ms" },
  "Styled SVG": { "ops": 11439, "avgTime": "0.0874 ms" },
  "获取模块数据": { "ops": 21366, "avgTime": "0.0468 ms" },
  "异步单条": { "ops": 15768, "avgTime": "0.0634 ms" }
}

总结

指标 胜出者 优势幅度
单条生成 Bun 19% - 81%
批量生成 Bun 43% - 171%
SVG 输出 Bun 36% - 44%
纠错级别 Bun 56% - 193%
异步生成 Bun 0.7%

总体结论: 在 QRCode 生成性能方面,@veaba/qrcode-bun 全面优于 @veaba/qrcode-node。如果您的项目使用 Bun 运行时,推荐选择 @veaba/qrcode-bun 以获得更好的性能表现。


数据文件: benchmark_node_result.json | benchmark_bun_result.json

最后更新: 2026-02-02