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
Collaborator

把这条线的结论收成一个文档,避免散落在多个 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 的实测。

把这条线的结论收成一个文档,避免散落在多个 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 的实测。
company-desktop added 1 commit 2026-10-28 23:05:14 +08:00
把这条线的结论收成一个文档,避免散落在多个 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 的实测。
gjm merged commit c526009a7d into main 2026-10-29 15:59:18 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gjm/envi-code#107