OpenCode 性能剖析:流式 delta 每次重复解析整个 Markdown 块

Te-River · ghdev · 2026-10-11

OpenCode 桌面应用的一个已复现 issue 深入剖析了流式渲染的性能瓶颈:每个流式 delta 在主线程上耗时约 2ms,而最大开销不是状态存储遍历,而是 Markdown 块的 HTML 重解析与 DOM 往返。

作者 Te-River 用 CDP 加 sourcemap 映射,对 8 个并行流式会话中的 600 个可见 delta 做了生产构建剖析(2880ms 采样自耗时):

问题路径在 markdown.tsx:每个 delta 都执行 innerHTML 全块解析 → 多次 DOM 遍历标记内联代码/链接 → 序列化回字符串 → 再次 parseMarkdownNodes 解析,即「解析-序列化-再解析」三连。真正的 parseMarkdownNodes 只占 2.4%,开销全在它周围的 DOM 往返。存储遍历的问题已在关联 PR #54427 中着手减半,但作者指出它并非主要成本。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →