{
  "_status": "secondary-source",
  "_note": "五方 SVG 生成性能实测（fast / rust / kennytm / node / bun），统一纠错级别 M。Rust 三方在同一进程内依次测量；node 与 bun 各自独立进程。跨语言（JS vs Rust）的倍数不予提供——不同进程、不同 GC/JIT、不同计时原语（performance.now() vs Instant::now()），相除没有意义。另注意 qrcode-node 与 qrcode-bun 是两套不同实现，二者差异主要反映实现而非运行时。权威口径仍为 benchmark_speedup_verified.json。",
  "generated_at": "2026-10-14T11:35:37.488Z",
  "generator": "bench/svg-benchmark/collect-five-way.mjs",
  "methodology": {
    "ec_level": "M",
    "warmup": 20,
    "runs": 100,
    "metric": "avg_us",
    "unit": "µs（越低越好）",
    "timer_js": "performance.now()",
    "timer_rust": "Instant::now()",
    "rust_shared_process": true,
    "js_separate_process": true
  },
  "cases": [
    "short",
    "url",
    "long"
  ],
  "results": [
    {
      "impl": "qrcode-fast",
      "runtime": "Rust (同进程)",
      "case": "short",
      "bytes": 11,
      "avg_us": 10.7,
      "median_us": 10.4,
      "min_us": 10.1,
      "p95_us": 12.9,
      "module_count": 21,
      "svg_bytes": 4081
    },
    {
      "impl": "qrcode-rust",
      "runtime": "Rust (同进程)",
      "case": "short",
      "bytes": 11,
      "avg_us": 19.69,
      "median_us": 19.4,
      "min_us": 18.9,
      "p95_us": 21.9,
      "module_count": 21,
      "svg_bytes": 4081
    },
    {
      "impl": "kennytm",
      "runtime": "Rust (同进程)",
      "case": "short",
      "bytes": 11,
      "avg_us": 209.38,
      "median_us": 202.9,
      "min_us": 189.2,
      "p95_us": 244.1,
      "module_count": 21,
      "svg_bytes": 4486
    },
    {
      "impl": "qrcode-fast",
      "runtime": "Rust (同进程)",
      "case": "url",
      "bytes": 25,
      "avg_us": 17.02,
      "median_us": 16.7,
      "min_us": 16.4,
      "p95_us": 20.1,
      "module_count": 25,
      "svg_bytes": 5954
    },
    {
      "impl": "qrcode-rust",
      "runtime": "Rust (同进程)",
      "case": "url",
      "bytes": 25,
      "avg_us": 29.13,
      "median_us": 28.7,
      "min_us": 28.3,
      "p95_us": 31.7,
      "module_count": 25,
      "svg_bytes": 5954
    },
    {
      "impl": "kennytm",
      "runtime": "Rust (同进程)",
      "case": "url",
      "bytes": 25,
      "avg_us": 328.09,
      "median_us": 322.7,
      "min_us": 301.3,
      "p95_us": 373.8,
      "module_count": 25,
      "svg_bytes": 6458
    },
    {
      "impl": "qrcode-fast",
      "runtime": "Rust (同进程)",
      "case": "long",
      "bytes": 115,
      "avg_us": 50.89,
      "median_us": 49.7,
      "min_us": 46.5,
      "p95_us": 55.9,
      "module_count": 45,
      "svg_bytes": 15992
    },
    {
      "impl": "qrcode-rust",
      "runtime": "Rust (同进程)",
      "case": "long",
      "bytes": 115,
      "avg_us": 102.67,
      "median_us": 99.5,
      "min_us": 95,
      "p95_us": 121.2,
      "module_count": 45,
      "svg_bytes": 15992
    },
    {
      "impl": "kennytm",
      "runtime": "Rust (同进程)",
      "case": "long",
      "bytes": 115,
      "avg_us": 1244.78,
      "median_us": 1225.5,
      "min_us": 1189.7,
      "p95_us": 1367.1,
      "module_count": 45,
      "svg_bytes": 20530
    },
    {
      "impl": "qrcode-node",
      "runtime": "v24.21.0",
      "case": "short",
      "bytes": 11,
      "avg_us": 361.4219999999998,
      "median_us": 338.8000000000062,
      "min_us": 278.80000000000393,
      "p95_us": 520.700000000005,
      "module_count": 21,
      "svg_bytes": 4040
    },
    {
      "impl": "qrcode-node",
      "runtime": "v24.21.0",
      "case": "url",
      "bytes": 25,
      "avg_us": 609.9430000000002,
      "median_us": 574.2999999999938,
      "min_us": 506.10000000000355,
      "p95_us": 859.2000000000155,
      "module_count": 25,
      "svg_bytes": 5709
    },
    {
      "impl": "qrcode-node",
      "runtime": "v24.21.0",
      "case": "long",
      "bytes": 115,
      "avg_us": 2518.318999999998,
      "median_us": 2465.50000000002,
      "min_us": 2118.50000000004,
      "p95_us": 3023.0999999999995,
      "module_count": 45,
      "svg_bytes": 15087
    },
    {
      "impl": "qrcode-bun",
      "runtime": "1.3.11",
      "case": "short",
      "bytes": 11,
      "avg_us": 42.1160000000004,
      "median_us": 39.400000000000546,
      "min_us": 21.69999999999561,
      "p95_us": 68.10000000000116,
      "module_count": 21,
      "svg_bytes": 4082
    },
    {
      "impl": "qrcode-bun",
      "runtime": "1.3.11",
      "case": "url",
      "bytes": 25,
      "avg_us": 62.06700000000019,
      "median_us": 58.10000000000315,
      "min_us": 41.00000000000392,
      "p95_us": 86.60000000000423,
      "module_count": 25,
      "svg_bytes": 5955
    },
    {
      "impl": "qrcode-bun",
      "runtime": "1.3.11",
      "case": "long",
      "bytes": 115,
      "avg_us": 142.25499999999997,
      "median_us": 89.3999999999977,
      "min_us": 64.8000000000053,
      "p95_us": 277.5000000000034,
      "module_count": 45,
      "svg_bytes": 15533
    }
  ],
  "warnings": []
}
