docs: 汇总打开大图纸的性能结论(截面对画之外) #107

Merged
gjm merged 1 commits from company-desktop/company-desktop-computer/doc-open-perf-summary AGit into main 2026-10-29 15:59:18 +08:00
1 Commits
Author SHA1 Message Date
company-desktop 97826360fb docs: 汇总打开大图纸的性能结论(截面对画之外)
把这条线的结论收成一个文档,避免散落在多个 PR 的分析里。

内容:
- 优化前后数字:开图墙钟 113 s -> 93 s,截面恢复 22.4 s -> 9.4 s,
  开图期回写 1140 -> 0,临时文件 6773 -> 1733
- 剩下时间的归属(优化后 81,046 采样):
  base_ViewportDraw 之下 74.6%,Parasolid 67.5%,
  且 Parasolid 的 93.4% 发生在我们的视口绘制里;我们的 arx 自耗时 <1%
- 结论:剩余成本是"构件数量 x 单构件建模成本",
  既不是 CAD 自己在拖时间(绘制之外只剩 6.6%),也不是我们的代码慢(<1%)。
  一次开图要建 1335 个 AcDbX3dSolid + 1248 个 AecDbX3dPart,计数器验证每个只建一次。
- 还能动的方向按性价比排序:减少要建的几何(LOD)、几何跨会话持久化(Phase 3)、
  用基本体替代扫掠、截面再优化(已判定不做,收益 <0.5%)
- 诊断方法与踩过的坑:采样算不出次数必须用计数器;加密构建下函数级符号化不可靠
  (GuardBar::Draw3d 报 27% 实为误判);VSDiagnostics 本机会卡死、wpr -stop 有 COM bug,
  改用 xperf on/stop/merge;RVA 必须用 PDB 解析再下结论;计数器别写进同一份报告文件

验证:纯文档,数据来自 tools/run_acad_perf.ps1 + tools/perf_diagsession.py 的实测。
2026-10-28 23:05:13 +08:00