OpenCode 性能剖析:流式 delta 每次重复解析整个 Markdown 块
Te-River · ghdev · 2026-10-11
OpenCode 桌面应用的一个已复现 issue 深入剖析了流式渲染的性能瓶颈:每个流式 delta 在主线程上耗时约 2ms,而最大开销不是状态存储遍历,而是 Markdown 块的 HTML 重解析与 DOM 往返。
作者 Te-River 用 CDP 加 sourcemap 映射,对 8 个并行流式会话中的 600 个可见 delta 做了生产构建剖析(2880ms 采样自耗时):
- 32.8%(943.5ms):原生 (program) — HTML 解析、样式与布局
- 18.6%(536.5ms):solid-js/store 的 unwrap,每棵树每次 delta 被遍历两次
- 13.3%:等待 markdown worker 的空闲时间
问题路径在 markdown.tsx:每个 delta 都执行 innerHTML 全块解析 → 多次 DOM 遍历标记内联代码/链接 → 序列化回字符串 → 再次 parseMarkdownNodes 解析,即「解析-序列化-再解析」三连。真正的 parseMarkdownNodes 只占 2.4%,开销全在它周围的 DOM 往返。存储遍历的问题已在关联 PR #54427 中着手减半,但作者指出它并非主要成本。
「编程与Agent」频道最新
- Vercel 推出免注册部署:拖拽文件到首页即得线上 URL — steren · 2026-10-23
- 5 个 Claude Code 会话经 MCP 互发邮件,组队攻破多品牌网络摄像头 — doodlestein · 2026-10-23
- Vercel 上线 vercel deploy --temporary,可临时部署后自动清理 — cramforce · 2026-10-23
- 用同一个 Notion 工作区让多个 Agent 互相沟通分工,实测有效 — nbaschez · 2026-10-23
- Sierra 伦敦大会被指逊色旧金山场,Agent 落地数据成稀缺话题 — DimlyDimwitted · 2026-10-23
- 开源 C-Sweet 用本地 27B 小模型模拟整家公司运营 — Demonicated · 2026-10-23