diff --git a/CHANGELOG.md b/CHANGELOG.md index fb75205..3563c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # NavisworksTransport 变更日志 +## [0.18.3] - 2026-08-06 + +### ⚡ 性能优化 + +- **剖面盒遍历组节点聚合盒剪枝(大型模型 ~1.8 倍提速)**: + - `TraverseAndCollect` 对非几何节点(组节点)先查聚合包围盒,与剖面盒不相交 → **整棵子树跳过**(不再深入任何后代) + - 前提验证:NW 的 `BoundingBox()` 为文档级缓存(O(1) 读取,Architecture.nwd 2 万节点 + 全厂设备模型 403MB 实测全 0ms)——真正成本是每节点 Children/IsHidden/HasGeometry API 调用,剪枝省掉的正是这些 + - 实测(全厂设备模型 403MB,100×100×40 测试盒,3521 命中对象):**129.9s → 72.9s**;细长路径剖面盒(相交子树少)收益比例更高 +- **AncestorsAndSelf 后序传播(消除 K×D 次枚举,再降 ~15%)**: + - 命中对象只加入自己,祖先由父级 post-order 逐层上传(`TraverseAndCollect` 返回子树命中标志)——共享祖先只被加入一次,消除 K 个命中对象 × 树深 D 的 NW API 枚举 + - 实测(同测试环境):**72.9s → 62.0s**;两项叠加 **129.9s → 62.0s(~2.1 倍)** +- 正确性验证:盒内对象/隐藏节点与优化前完全一致(3521/80043;Architecture.nwd 228/4928) + +### 🧪 测试基础设施 + +- `export-section-box` 测试端点增加 `prune` 参数 + `traversalMs` 计时(性能对比用) +- `bbox-profiling` 端点增加 `enum=false` 模式(根盒查询,避免大模型全量枚举 10+ 分钟) +- **F1 测试后台残留修复**:`BatchQueueF1ProcessAutomationTests` 末尾等待批处理完全退出(`batch-queue-status` 新增 `isExecuting` 字段),修复 F1 跑完后全量测试 `BatchQueue_AddItems` 偶发失败 + +### 验证 + +- 集成测试 25/25 通过 + ## [0.18.2] - 2026-08-05 ### ✨ 功能变更 diff --git a/VERSION.md b/VERSION.md index eda4ce5..aad11e3 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1,3 +1,3 @@ # 版本号 -0.18.2 +0.18.3