From 8e16d28d45b705ab6e3a57bf486dffb33eb7fe81 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Thu, 6 Aug 2026 10:43:12 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=89=88=E6=9C=AC=200.18.3=20?= =?UTF-8?q?=E2=80=94=20=E5=89=96=E9=9D=A2=E7=9B=92=E9=81=8D=E5=8E=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=88=E5=89=AA=E6=9E=9D=20~1.8x=20+=20?= =?UTF-8?q?=E5=90=8E=E5=BA=8F=E4=BC=A0=E6=92=AD=20~15%=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 23 +++++++++++++++++++++++ VERSION.md | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) 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