docs: record what this performance round deferred and why

This commit is contained in:
mesalogo
2026-10-03 06:28:13 +08:00
parent 775763eee0
commit baa6defc0c
@@ -843,6 +843,29 @@ Renderer 主线程降速 4 倍(Main 不降速,每次 reload 后重新应用
不降速:全部阈值通过;流式输出和流式时打字的长任务均为 0。上一轮滚动的退化已消除(本轮基线
已含窗口化,故与 `53b9ecb` 的 17 ms / 7% 不完全可比,帧 p95 在两版中都波动较大)。
#### 2026-10-03 本期收尾:已做、暂缓与理由
本期收尾只做低风险改动:
- **侧栏 id 列表保持同一数组**(`ConversationSidebar.tsx`):流式更新时,会话对象每次都会变,
原来每次都生成新的 id 数组,导致侧栏窗口化的布局 effect 重跑并读取 `scrollTop`。4× 降速剖析
显示,这段在流式场景中占 562 ms self time。现在 id 不变时,数组也保持不变。
- **会话标题跑马灯不在挂载时强制布局**(`OverflowMarquee.tsx`):挂载时不再同步读取
`scrollWidth`,改由 ResizeObserver 在首次报告时测量,有回归测试。悬停时的测量方式不变。
- 4× 降速下复测,这两项的变化都在波动范围内(同版本多次运行,差距可达 2 倍),没有出现退化;
不降速时 60 项阈值全部通过。
**本期暂缓,理由如下:**
| 项目 | 理由 |
| --- | --- |
| Renderer 改用 `activity-history:update` | 需要在 App 中跟踪每次变化并处理顺序与失败重试;Main 端已经只处理变化的记录,Main 卡顿从 13.8 ms 降到 9.3 ms,剩余收益小,而出错会丢活动记录 |
| 数据库写入异步化、独立数据进程(PERF-15/16 剩余部分) | 涉及约 530 处调用和写入顺序语义,属于高风险大改动;本期已把最重的读取路径(检索、会话列表、搜索)移出 Main,需要单独立项 |
| 首次切换会话(4× 降速 p95 约 430 ms) | 剖析显示,开销分散在 React 渲染、首次 Markdown 解析和 i18n 上,没有单一热点;不降速时 p95 约 70 ms,已在阈值内 |
| 流式输出 Markdown 放进 worker | 需要重写渲染管线,并处理流式中途结果和公式;不降速时流式场景已无长任务 |
| 页内查找覆盖未挂载的消息 | 当前 App 没有页内查找功能(未调用 `findInPage`),属于新功能,不是回归 |
| 性能阈值接入 CI | 仓库目前没有 CI 工作流;`npm run perf:check` 可以在本地运行 |
### PERF-14 状态
- **优先级 / 状态:** P2 / 进行中(消息时间线和侧栏已窗口化;页内查找等限制未解决)