docs: 补开图速度优化方案 #41

Merged
gjm merged 1 commits from company-desktop-computer/docs/open-speed-plan AGit into main 2026-10-22 14:48:04 +08:00
Collaborator

第 13 节从「两个候选方向」扩写成可执行方案:

  • 13.1 成本模型:dwgInFields:1824 无条件 Create();Create() 每次全量重建,
    AddX3dSolid 不置脏,调用方只能靠再调 Create() 保证同步
  • 13.2 方案 A(推荐,不改格式),分两步:
    A1 加 m_bDirty,Create() 早退,改参数的 15 个接口置脏
    A2 dwgInFields 去掉 Create(),5 个读入口统一走 EnsureCreated
    附收益边界与四个风险点(副作用延迟、失败重试、const_cast、CopyFrom 冗余)
  • 13.3 方案 B 缓存布尔结果:dwg 字段要升版本(不接受)、扩展字典 xrecord
    可兼容但体积膨胀,结论是量完 A 再定
  • 13.4 方案 C 降低单次重建成本:bbox 剔除、减少 clone、DrawUserInf3d 热点
  • 13.5 度量埋点与验收判据
  • 13.6 建议顺序:A1 → A2 → 再决定 B/C
第 13 节从「两个候选方向」扩写成可执行方案: - 13.1 成本模型:dwgInFields:1824 无条件 Create();Create() 每次全量重建, AddX3dSolid 不置脏,调用方只能靠再调 Create() 保证同步 - 13.2 方案 A(推荐,不改格式),分两步: A1 加 m_bDirty,Create() 早退,改参数的 15 个接口置脏 A2 dwgInFields 去掉 Create(),5 个读入口统一走 EnsureCreated 附收益边界与四个风险点(副作用延迟、失败重试、const_cast、CopyFrom 冗余) - 13.3 方案 B 缓存布尔结果:dwg 字段要升版本(不接受)、扩展字典 xrecord 可兼容但体积膨胀,结论是量完 A 再定 - 13.4 方案 C 降低单次重建成本:bbox 剔除、减少 clone、DrawUserInf3d 热点 - 13.5 度量埋点与验收判据 - 13.6 建议顺序:A1 → A2 → 再决定 B/C
company-desktop-computer added 2 commits 2026-10-22 14:46:20 +08:00
决定不做 region 二进制化,两条理由:
1. 主要收益只是图纸体积,而当前图纸大小在可接受范围内
2. 改动会改变存储格式,新图在老插件上读不出 region 几何,要么升版本号
   变 proxy,要么额外做降级导出兜底,性价比不足

文档调整:
- 开头原则改为状态说明,明确格式保持现状、新老插件双向可读
- 第 3、4、12 节标注为存档;第 9、10 节同步阶段三取消
- 第 11 节由「暂缓」改为「取消」,11.1 改为取消后的兼容状态,
  11.2 保留重启前提与改动范围核对结果
- 新增第 13 节:开图速度方向。瓶颈是 X3dPartEntity::dwgInFields:1824
  无条件调用 Create(),成本约 N×(acisIn+clone) + (N−1)×布尔;
  列出懒执行与缓存布尔结果两个候选
第 13 节从「两个候选方向」扩写成可执行方案:

- 13.1 成本模型:dwgInFields:1824 无条件 Create();Create() 每次全量重建,
  AddX3dSolid 不置脏,调用方只能靠再调 Create() 保证同步
- 13.2 方案 A(推荐,不改格式),分两步:
  A1 加 m_bDirty,Create() 早退,改参数的 15 个接口置脏
  A2 dwgInFields 去掉 Create(),5 个读入口统一走 EnsureCreated
  附收益边界与四个风险点(副作用延迟、失败重试、const_cast、CopyFrom 冗余)
- 13.3 方案 B 缓存布尔结果:dwg 字段要升版本(不接受)、扩展字典 xrecord
  可兼容但体积膨胀,结论是量完 A 再定
- 13.4 方案 C 降低单次重建成本:bbox 剔除、减少 clone、DrawUserInf3d 热点
- 13.5 度量埋点与验收判据
- 13.6 建议顺序:A1 → A2 → 再决定 B/C
gjm approved these changes 2026-10-22 14:47:59 +08:00
gjm merged commit b75b779518 into main 2026-10-22 14:48:04 +08:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gjm/envi-code#41