RegionTexts=5641 UniqueHashes=2597 SimulatedHits=3044 HitRate=54.0%
TempFiles=6773 TempBytes=9,341,125 WriteBacks=1140
CoreTools::StringToRegion 2559 次 14.6 s 平均 5.7 ms 最长 321 ms
EwPipe::RegionAcisIn 3082 次 8.3 s 平均 2.7 ms
EwPipe::RegionAcisout 1140 次 2.3 s 平均 2.0 ms
结论:一次开图做 5641 次 SAT 恢复,共 22.9 s(约占 108 s 的 21%)。
此前基于 CPU 采样的估算只有 5501000 次,低估了 510 倍——说明采样只能算占比,
算不出调用次数,这类结论必须靠计数器。
按 54% 命中率折算,Phase 1 缓存净省约 12 s(约 11%),并少约 4000 次临时文件写盘。
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase 0 在本机跑通(big1.dwg / AutoCAD 2020 / R230 Debug,开图 108 s):
RegionTexts=5641 UniqueHashes=2597 SimulatedHits=3044 HitRate=54.0%
TempFiles=6773 TempBytes=9,341,125 WriteBacks=1140
CoreTools::StringToRegion 2559 次 14.6 s 平均 5.7 ms 最长 321 ms
EwPipe::RegionAcisIn 3082 次 8.3 s 平均 2.7 ms
EwPipe::RegionAcisout 1140 次 2.3 s 平均 2.0 ms
结论:一次开图做 5641 次 SAT 恢复,共 22.9 s(约占 108 s 的 21%)。
此前基于 CPU 采样的估算只有 550
1000 次,低估了 510 倍——说明采样只能算占比,算不出调用次数,这类结论必须靠计数器。
按 54% 命中率折算,Phase 1 缓存净省约 12 s(约 11%),并少约 4000 次临时文件写盘。
同时记录三个待追查项:命中率为何只有 54%、StringToRegion 为何比 RegionAcisIn 贵一倍、
开图期间为何回写 1140 次 SAT。
文档里补充了"用管子属性做 key"的思路与风险:属性相同则截面相同,业务上成立,
但不能单独当 key——DWG 里的 SAT 文本可能来自旧版本/旧路径/手工编辑的异形截面,
属性漏一项就会静默复用错误几何。若要做,采用 L1 内容 hash + L2 属性 key 的两级结构,
L2 命中后仍比对 textHash,不一致按 miss 处理;落地前先加一路属性 key 命中率计数比较。
另外新增 tools/run_acad_perf.ps1 并在 AGENTS.md 记录本机 CAD 实测环境:
acad.exe 路径、/p SHS-ENVI2026 启动参数、测试图纸、部署目录,
以及"PowerShell 5.1 把无 BOM 的 UTF-8 当 ANSI 读"这个坑(脚本保持 ASCII)。
验证:文档与脚本;脚本语法检查通过,本次实测就是用它的等价命令跑出来的。