<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[vLLM vs SGLang 服务端全面对比（单卡R9700 / gfx1201 / 32 GB）]]></title><description><![CDATA[<h1>vLLM vs SGLang 服务端全面对比（R9700 / gfx1201 / 32 GB）</h1>
<hr />
<blockquote>
<p dir="auto"><strong>核心前提（必须先说明）</strong>：两者<strong>跑的不是同一个模型</strong>。</p>
<ul>
<li>vLLM 跑的是生产模型 <code>Qwen3.8-27B</code>（GPTQ int4 W4A16，18 GB）+ DFlash2 int4 draft。</li>
<li>SGLang 跑的是官方示例 <code>Meta-Llama-3.1-8B</code>（BF16，16 GB）。<br />
<strong>硬约束</strong>：SGLang v0.5.15 在 gfx1201 上<strong>没有 int4 内核</strong>（源码级证据见可行性评估 §4），27B int4 模型在 SGLang 上根本加载不了；而 27B 若用 BF16 需 54 GB，超出 32 GB 显存。所以两者只能各跑各的模型。下文所有对比都在这个前提下展开。</li>
</ul>
</blockquote>
<hr />
<h2>1. 部署与技术栈对比</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>维度</th>
<th>vLLM（vllm102）</th>
<th>SGLang（sgl-test）</th>
</tr>
</thead>
<tbody>
<tr>
<td>版本</td>
<td>vLLM 0.27.1 + <strong>radiance 0.9.3 fork</strong>（<code>stilldeadcode/vllm-radiance:0.9.3</code>）</td>
<td>SGLang 0.5.15（官方 <code>rocm/sgl-dev:v0.5.15.post1-...-rocm10.0.0</code>）</td>
</tr>
<tr>
<td>模型</td>
<td>Qwen3.8-27B，GPTQ W4A16 int4（17.93 GB）</td>
<td>Meta-Llama-3.1-8B，BF16（16 GB，官方示例/基础模型）</td>
</tr>
<tr>
<td>量化</td>
<td>int4（radiance fork 手写 RDNA4 W4A16 kernel）</td>
<td>无（BF16）</td>
</tr>
<tr>
<td>注意力后端</td>
<td><strong>R4D</strong>（为 gfx1201 手写的 attention/GDN/瘦 GEMM kernel）</td>
<td><strong>Triton</strong>（AITER 被官方文档强制禁用）</td>
</tr>
<tr>
<td>投机解码</td>
<td><strong>DFlash2</strong> int4 draft（1.19 GB），K=4，probabilistic 采样</td>
<td>无（本次未开）</td>
</tr>
<tr>
<td>镜像来源</td>
<td>第三方 fork</td>
<td>AMD 官方兼容性矩阵背书</td>
</tr>
<tr>
<td>部署方式</td>
<td>手工 docker run + <code>warmup_vllm.sh</code>（cron @reboot 自愈）</td>
<td>官方文档 docker run（无自愈脚本）</td>
</tr>
<tr>
<td>鉴权</td>
<td><strong>有 API key</strong></td>
<td>无（默认开放）</td>
</tr>
</tbody>
</table>
<hr />
<h2>2. 性能对比（实测）</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>指标</th>
<th>vLLM（27B int4）</th>
<th>SGLang（8B BF16）</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>单流 decode</td>
<td><strong>54–62 tok/s</strong>（文档稳态，今日测）；重启后首请求 40.6 tok/s</td>
<td><strong>≈28 tok/s</strong></td>
<td>见下方「归一化解读」</td>
</tr>
<tr>
<td>prefill</td>
<td>≈1700–1820 tok/s（27B，2.4k 提示）</td>
<td><strong>≈6800 tok/s</strong>（8B，1803 提示）</td>
<td>模型规模差 ~3.4×</td>
</tr>
<tr>
<td>TTFT</td>
<td>0.11 s（49 tok）/ 1.40 s（2412 tok）</td>
<td>0.266 s（1803 tok）</td>
<td>—</td>
</tr>
<tr>
<td>投机接受率</td>
<td>DFlash2 int4：acc/step≈1.54，~20.6 steps/s；MTP 各位置 72%→23%</td>
<td>无投机</td>
<td>vLLM 靠投机突破带宽上限</td>
</tr>
<tr>
<td>前缀缓存命中</td>
<td><strong>78.8%</strong>（10.5 h 生命周期，agent 负载）</td>
<td>RadixCache 已启用，未实测命中率</td>
<td>vLLM 有生产实据</td>
</tr>
</tbody>
</table>
<h3>归一化解读（关键）</h3>
<ul>
<li><strong>SGLang 8B BF16 decode 28 tok/s 已接近硬件上限</strong>：16 GB 权重 ÷ R9700 实测带宽 494 GB/s ≈ 31 tok/s 理论上限，实际 28 = 理论值的 <strong>~90%</strong>。也就是说 SGLang 在这张卡上「没有跑慢」，是被内存带宽锁死。</li>
<li><strong>vLLM 27B int4 能到 54–62 tok/s，是因为两件 SGLang 没有的东西</strong>：
<ol>
<li><strong>int4 量化</strong>把权重从 54 GB（BF16）压到 18 GB，内存带宽瓶颈降到 ~27 tok/s；</li>
<li><strong>DFlash2 投机解码</strong>一次并行 forward 提 4 个 token，把有效吞吐再抬到 54–62（≈2× 带宽上限）。</li>
</ol>
</li>
<li>所以「vLLM 快」的本质是<strong>量化 + 投机解码 + 定制 kernel</strong>这三板斧，而不是 SGLang 本身慢。SGLang 在相同内存带宽下已做到 ~90% 效率。</li>
</ul>
<hr />
<h2>3. 稳定性对比</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>参数</th>
<th>vLLM</th>
<th>SGLang</th>
</tr>
</thead>
<tbody>
<tr>
<td>自愈能力</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> <code>warmup_vllm.sh</code> cron @reboot，容器停了自动 <code>docker start</code> + 6 种形状预热</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /> 无（手动 <code>docker start</code>）</td>
</tr>
<tr>
<td>启动/预热时间</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 暖启动 ~30–60 s（<code>/cache/vllm</code> 共享挂载，compiled graph 直接加载，实测 3.3–5.4 s）</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 首启 ~5 min（Triton 对 gfx1201 编译）；后续会快</td>
</tr>
<tr>
<td>显存压力</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 97%（31.1/32 GB，很紧，单卡独占）</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 93%（模型 15 + KV 10.9 GB）</td>
</tr>
<tr>
<td>KV 缓存</td>
<td><strong>fp8</strong>（省显存，6.46–8.5 GB）</td>
<td>bf16（10.94 GB，占更多）</td>
</tr>
<tr>
<td>并发设计</td>
<td>MAXSEQS=2（限并发、保单请求质量）</td>
<td>默认 max_running_requests=2048（灵活，但受显存约束实际并发有限）</td>
</tr>
<tr>
<td>鉴权</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> API key 保护（局域网暴露更安全）</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /> 默认无鉴权（若对局域网开放需自行加）</td>
</tr>
<tr>
<td>长稳运行</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 有 10.5 h 生命周期统计、0 抢占、RAS 干净</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--warning" style="height:1.4em;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ 仅短时验证（~10 min），无长稳数据</td>
</tr>
<tr>
<td>已知风险</td>
<td>依赖第三方 fork，升级/迁移受制于 radiance 维护节奏</td>
<td>R9700 官方已知问题：AITER 禁用、部分 MoE/Qwen3-ASR 模型可能不对</td>
</tr>
</tbody>
</table>
<hr />
<h2>4. 功能特性对比</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>特性</th>
<th>vLLM</th>
<th>SGLang</th>
<th>谁更强</th>
</tr>
</thead>
<tbody>
<tr>
<td>前缀缓存</td>
<td>block 级 prefix caching（实测 78.8% 命中）</td>
<td><strong>RadixCache 树形缓存</strong>（更细粒度，同前缀共享更高效）</td>
<td>SGLang（理论上），vLLM（有生产实据）</td>
</tr>
<tr>
<td>结构化输出</td>
<td>支持（guided decoding）</td>
<td><strong>原生强项</strong>（JSON schema / grammar / constrained）</td>
<td>SGLang</td>
</tr>
<tr>
<td>多 agent / 工具调用</td>
<td>支持（tool-call-parser qwen3_xml）</td>
<td>服务形态更适合多 agent 编排、多轮工具调用</td>
<td>各有所长</td>
</tr>
<tr>
<td>投机解码生态</td>
<td><strong>DFlash2 / MTP / Eagle 全支持</strong>（本卡已用 DFlash2）</td>
<td>支持 MTP/Eagle 等，但本卡无 radiance 定制</td>
<td>vLLM</td>
</tr>
<tr>
<td>量化生态</td>
<td>本卡 int4（radiance fork 独占）</td>
<td>FP8/AWQ/MXFP4 等（但 <strong>MXFP4 门槛不认 gfx1201</strong>，int4 无）</td>
<td>vLLM（本卡）</td>
</tr>
<tr>
<td>官方 ROCm 维护</td>
<td>第三方 fork</td>
<td><strong>AMD 官方镜像 + 兼容性矩阵背书</strong>，持续维护</td>
<td>SGLang</td>
</tr>
<tr>
<td>长上下文 / 大模型（MoE/MLA）</td>
<td>成熟</td>
<td>DeepSeek 系 MoE/MLA 优化是其强项</td>
<td>SGLang（大集群场景）</td>
</tr>
</tbody>
</table>
<hr />
<h2>5. 优缺点总结</h2>
<h3>vLLM（当前生产）</h3>
<p dir="auto"><strong>优点</strong></p>
<ol>
<li>本卡上<strong>唯一能跑 27B 生产模型</strong>的路径（radiance fork 的 RDNA4 int4 kernel + R4D 注意力 + DFlash2 投机解码）。</li>
<li>性能深度调优，decode 54–62 tok/s（27B），远超 SGLang 在本卡能跑的任何模型。</li>
<li>生产化程度高：API key、自愈脚本、预热、编译缓存、10.5 h 稳定运行实据、前缀缓存 78.8% 命中。</li>
</ol>
<p dir="auto"><strong>缺点</strong></p>
<ol>
<li>依赖<strong>第三方 fork</strong>（stilldeadcode/vllm-radiance），升级/迁移/长期维护受制于人，不是官方路线。</li>
<li>显存 97% 打满，无余量；并发被压到 MAXSEQS=2。</li>
<li>定制 kernel + 覆盖层（rdna_hybrid_w4a16.py、qwen3_dflash.py）是「黑魔法」，跨版本脆弱。</li>
</ol>
<h3>SGLang（本次部署）</h3>
<p dir="auto"><strong>优点</strong></p>
<ol>
<li><strong>AMD 官方镜像 + 兼容性矩阵背书</strong>，路线正规、持续维护，是「官方钦定」的推理栈。</li>
<li>功能面更现代：RadixCache、结构化输出、多 agent/工具调用服务形态、DeepSeek 系 MoE/MLA 优化。</li>
<li>部署即开箱（官方一条 docker run），无自写 kernel 负担。</li>
<li>在硬件上限内效率不低（decode 达带宽上限 ~90%、prefill 6800 tok/s）。</li>
</ol>
<p dir="auto"><strong>缺点</strong></p>
<ol>
<li><strong>本卡上跑不了 27B 生产模型</strong>（缺 int4 内核，MXFP4 也不认 gfx1201）——这是硬伤。</li>
<li>性能被 AITER 禁用 + Triton 注意力锁死（R9700 官方已知问题），decode 只能到带宽上限。</li>
<li>无自愈脚本、无鉴权、无长稳验证——要当生产用还需补生产化工程。</li>
<li>官方示例是基础模型（无 chat_template），对话需换 Instruct 版。</li>
</ol>
<hr />
<h2>单卡成功案例Puget Systems 官方测评（主流背书）（1× R9700，vLLM FP16）</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>模型</th>
<th>单用户吞吐</th>
</tr>
</thead>
<tbody>
<tr>
<td>Qwen2.5 3B</td>
<td>53.3 tok/s</td>
</tr>
<tr>
<td>DeepSeek-R1-Distill-Llama-8B</td>
<td>34.5 tok/s</td>
</tr>
<tr>
<td><strong>Llama 3.1 8B</strong></td>
<td><strong>29.1 tok/s</strong></td>
</tr>
<tr>
<td>Qwen3 8B</td>
<td>27.7 tok/s</td>
</tr>
</tbody>
</table>
<blockquote>
<p dir="auto">关键交叉验证：Puget 的 Llama 3.1 8B = 29.1 tok/s（vLLM），本机实测 SGLang 同一模型 = 28 tok/s。几乎一样——<strong>证实 8B BF16/FP16 上 SGLang 与 vLLM 引擎同量级，都被内存带宽锁死</strong>。</p>
</blockquote>
<h2>6. 建议</h2>
<p dir="auto"><strong>一句话结论：生产 27B 继续用 vLLM，SGLang 定位为「官方路线的观察点 + 小模型/agent 试验台」，两者不互斥。</strong></p>
<h3>具体建议</h3>
<ol>
<li>
<p dir="auto"><strong>27B 生产服务：维持 vLLM（vllm102），不要迁 SGLang</strong>。<br />
理由：SGLang v0.5.15 在本卡根本跑不了 27B int4（缺内核），且即便跑小模型 decode 也只有 28 tok/s，无法替代 vLLM 的 54–62 tok/s。迁移不仅无收益，反而掉档。</p>
</li>
<li>
<p dir="auto"><strong>SGLang 的合理用途（如果想继续用）</strong>：</p>
<ul>
<li><strong>小模型（≤8B）+ agent 工具调用 / 结构化输出 / 多轮短上下文</strong>场景：这正是 SGLang 的 RadixCache + structured output + 多 agent 服务形态强项，也是 vLLM 当前 MAXSEQS=2、97% 显存所服务不到的低延迟轻负载。</li>
<li><strong>同卡时间片切换</strong>：需先 <code>docker stop vllm102</code> 再 <code>docker start sgl-test</code>（32 GB 无法共存），适合夜间/维护窗口，不适合白天生产时段。</li>
</ul>
</li>
<li>
<p dir="auto"><strong>如果要把 SGLang 当第二服务长期跑，需补三件事</strong>（否则别上生产）：</p>
<ul>
<li>换 <code>NousResearch/Meta-Llama-3.1-8B-Instruct</code>（补 chat_template，让 <code>/v1/chat/completions</code> 可用）；</li>
<li>加 <code>--api-key</code> 鉴权（当前无鉴权直接暴露 0.0.0.0:30000）；</li>
<li>补 <code>warmup</code> 自愈脚本（对标 vLLM 的 <code>warmup_vllm.sh</code>）。</li>
</ul>
</li>
<li>
<p dir="auto"><strong>触发重评的观察点（何时结论会变）</strong>：</p>
<ul>
<li>AMD/SGLang 为 <strong>gfx1201 补 int4 或 MXFP4 内核</strong> → 27B 4-bit 路径打开，届时 SGLang 才具备替代 vLLM 的资格，值得重做 §2 的性能对比；</li>
<li><strong>R9700 的 AITER 已知问题被修复</strong> → SGLang 注意力从 Triton 切回 AITER，decode 有望显著提速；</li>
<li><strong>radiance fork 停更/失修</strong> → 若 vLLM 定制栈无人维护，SGLang 的官方路线价值上升。</li>
</ul>
</li>
<li>
<p dir="auto"><strong>想得到真正「同模型」的公平基准</strong>：可在同一维护窗口，让两者各跑同一个 8B BF16 模型（vLLM 也能跑 8B BF16），测同模型 decode/prefill/并发，才能剥离「模型规模」变量做纯引擎对比。</p>
</li>
</ol>
<hr />
<h2>7.  对单卡 + 27B 场景的结论</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>之前结论（基于 v0.5.15）</th>
<th>修正后准确版本</th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /> SGLang 跑不了 27B</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 官方 v0.5.15 跑不了；但 v0.5.20 + 70 补丁（社区）+ 2 卡 + FP8/AWQ 能跑，22.5 tok/s</td>
</tr>
<tr>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /> SGLang 引擎弱</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 同精度下 SGLang 不弱——27B FP8 单用户，SGLang 22.5 &gt; 原版 vLLM 15.88</td>
</tr>
<tr>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--x" style="height:1.4em;width:auto;vertical-align:middle" title="❌" alt="❌" /> 2 卡才能"生产"</td>
<td><img src="https://lcz.me/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=ec85ec55bc1" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:1.4em;width:auto;vertical-align:middle" title="✅" alt="✅" /> 1 卡能生产（int4 27B 或 8B）；2 卡只是"27B 高精度"的门槛</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>对「单卡 + 27B 生产」，结论不变甚至更强</strong>：</p>
<p dir="auto">vLLM（radiance fork，int4 + DFlash2 投机解码，单卡 54–62 tok/s）仍是单卡最优：</p>
<ul>
<li>它用 <strong>int4</strong>（18GB）让 27B 塞进单卡，靠 <strong>DFlash2 投机解码</strong>拉到 54–62 tok/s；</li>
<li>SGLang 27B 要 2 卡 + 补丁 + FP8 才 22.5 tok/s；原版 vLLM 27B FP8 也要 2 卡才 15.88 tok/s；</li>
<li>等于用 <strong>1 张卡</strong> 打出别人 <strong>2 张卡 + MTP</strong> 才有的水平（62.75 tok/s）。</li>
</ul>
<hr />
<h2>8.  明确结论</h2>
<ul>
<li>"单流 decode 在 RDNA4 上是<strong>内存带宽受限</strong>的"</li>
<li>"单卡 R9700 能跑 8B FP16；<strong>27B 用 Q4_K_M（~17.6GB）单卡就能装下</strong>；只有 27B 的 FP8/BF16 高精度才需要两张卡"</li>
<li>双卡多 GPU 必须裸机运行（KVM/VFIO 虚拟化下 RCCL 初始化会挂）</li>
</ul>
<hr />
]]></description><link>https://lcz.me/topic/1869</link><generator>RSS for Node</generator><lastBuildDate>Thu, 22 Oct 2026 21:03:15 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1869.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Sep 2026 16:41:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vLLM vs SGLang 服务端全面对比（单卡R9700 / gfx1201 / 32 GB） on Mon, 21 Sep 2026 22:03:07 GMT]]></title><description><![CDATA[<p dir="auto">前提已经点到了（两边不同模型），所以结论最好只落在「引擎」这一层，别被模型规模污染：</p>
<ol>
<li>
<p dir="auto">想比引擎就得等模型：8B BF16 两边各跑一次，或在两边都能加载的档位上跑同一个 27B（SGLang 若在 gfx1201 确实没有 int4 kernel，就退到能加载的 FP8/AWQ），否则「vLLM 快」永远分不清是引擎、量化还是投机。</p>
</li>
<li>
<p dir="auto">你已经算出的 28/31≈90% 其实是最重要的一条：SGLang 在这张卡上没跑慢，是被 494 GB/s 带宽锁死。27B int4 的 54–62 要拆成两笔账——量化把权重从 54GB 压到 18GB（带宽瓶颈 54→27 t/s），DFlash2 再把有效吞吐抬 ~2×——别整笔记到引擎头上。prefill 6800 vs 1700 ≈4×、参数 3.4×，两边 prefill 效率其实同级。</p>
</li>
<li>
<p dir="auto">agent 负载另看前缀缓存命中率与 TTFT p95：vLLM 有 78.8% 生产实据，SGLang 的 RadixCache 只是启用未测。用同一条 agent trace 对打命中率 + p95，比单流 decode 更能说明「服务端谁更好」。</p>
</li>
</ol>
]]></description><link>https://lcz.me/post/19859</link><guid isPermaLink="true">https://lcz.me/post/19859</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Mon, 21 Sep 2026 22:03:07 GMT</pubDate></item></channel></rss>