Skip to content

[perf] 桌面端启动与大历史会话端到端性能 #949

Description

@limityan

目标

降低桌面端冷启动到可交互、默认大历史 session 首次打开/切换、以及首次可读后的滚动和窗口变化等关键交互耗时;同时避免 loading 回闪、裸白屏、滚动跳动和输入框异常锚定。性能结论以用户场景端到端数据为准,局部时间片下降不能单独作为收益结论。

结论

阶段性目标已达成。最新 main 已包含 #1356,并在 Windows desktop release-fast、隔离 E2E workspace、同机样本下完成最终复测:冷启动与大历史 session 关键场景相比 issue 创建期均有明确端到端下降;大历史 session 首开、快速切换、首次滚动、窗口宽度变化未复现 blank/回闪。

关键结果快照

用户场景 issue 创建期基线 最新 main 结果 变化
冷启动到聊天主界面可操作 1538.9 ms 589.7 ms(425.9-652.8,n=20) -949.2 ms(-61.7%)
首次打开默认大历史 session,到最新正文可读 965.1 ms 164.1 ms -801.0 ms(-83.0%)
首次打开默认大历史 session,到完整历史补齐 1118.1 ms 274.2 ms -843.9 ms(-75.5%)
再次打开默认大历史 session,到最新正文可读 457.7 ms 171.9 ms -285.8 ms(-62.5%)
大历史 session 零延迟快速切换,到目标最新正文可读 无同口径基线 245.6 ms,blank=0 新增 guard
首次可读后立刻滚动 无同口径基线 133.0 ms,blank=0 新增 guard
首次可读后调整窗口宽度 无同口径基线 148.6 ms,blank=0 新增 guard

关键分片:Noto Sans SC 随包字体体积从 31,660,680 bytes 降到 12,703,276 bytes(-59.9%);NotoSansSC-Regular WOFF2 最新 main 启动资源耗时 p50 为 44.7 ms(n=20),相对同日 TTF main p50 240.3 ms 明显下降。

核心方案

  • 大历史 session 优先保障最新正文首屏可读,完整历史在不打断滚动、输入、切换和 resize 的前提下补齐。
  • 启动期非关键系统与后台任务避开首屏关键窗口,防止和首次可交互、首次打开 session 竞争。
  • 随包 Noto Sans SC 从完整 TTF 切换为完整 WOFF2,只改变字体资源格式,不做子集化、不删字重、不改字体族、fallback 或字符覆盖。
  • 通过冷启动稳定性脚本与大历史 session 交互矩阵看护首开、快速切换、滚动、resize、blank/回闪等关键场景。

风险与边界

  • WebView2、系统调度和磁盘状态仍可能带来启动 outlier;本 issue 以阶段性端到端收益闭环,不把所有 native/WebView 抖动问题混在同一个综合 issue 内继续扩张。
  • 字体优化保持完整字符覆盖和 400/500/600 字重语义;不以牺牲中文显示质量换性能。
  • 大历史 session 优化不改变用户可见行为:打开后锚底、快速切换、输入、滚动、窗口变化和关闭语义都需要保持稳定。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions