Files
FreeCADWasmDev/docs/current/efficiency-v22-fixes.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

4.5 KiB
Raw Blame History

2026-09-09 效率修复与模块预加载

本次沿用已提供的桌面 FreeCAD 源码、现有独立 WASM 和交付顺序,没有重编译 native、重做 DXF 或缩减完整业务范围。详细基线见 逐轮耗时 及同名 JSON。

20 轮实测基线

窗口:5280–5299;累计测量 2364.373 秒。事件间隔包含模型、服务、传输与客户端时间,不是纯推理时间;下面的阶段已计入总量,不再加轮间间隔。

步骤 秒 占比 处理重点
读取后无工具间隔 437.034 18.48% 复用已有证据与当前工作包,减少无效恢复
空闲终止 429.344 18.16% 脚本编辑不得误判为无编辑
首次决策 394.935 16.70% 有现成有效结果不再启动模型重复实现
实际编辑区间 318.754 13.48% 保留真实修改,不削减业务内容
后置构建 212.733 9.00% 按实际 Worker 对应目标增量构建
CMake 再生成 76.204 3.22% 链接参数问题一次预检报全
实际文件读取 2.206 0.09% 不是本窗口主要瓶颈

本窗口流式失败 0;11 轮处于恢复流程,累计约 1100.5 秒。不能据此声称网络完全稳定,也不能继续将主要浪费全部归为网络。

已完成修复

问题及证据 改动 验证边界
混合通过/失败报告随非零退出被整体打回,已成功业务重复恢复 run_business_acceptance.py 保留逐项成功证据及进程退出码,整体仍返回未完成,只标记剩余项失败 成功子集可 --reuse,不再次执行;重复 ID、全通过但进程失败、依赖变化仍拒绝
JtReader 5297–5299 分多轮补链接设置,路径中 -pthread 被误当选项 check_web_link_closure.py 使用参数解析,缺真实 -pthread 和线程池设置一次报全 本地预检测试,无需重复实际链接
Fem 5290 脚本已写源码,调度器仍显示 fileChanges=0,最终空闲终止 只跟踪本批源码/合同,在工具结束后比较内容;识别后交给原有后置增量流水线 脚本修改、创建、删除可识别;纯读取/touch 不计编辑;显式补丁不重复计数;不打断活动工具
预加载遗漏 manifest 顶层地址;NaN 并发参数造成零下载却 ready 两个既有预加载入口均兼容顶层/Worker 地址,并归一化并发参数 仅所选模块、地址去重、并发不超过 2、失败不报 ready

模块化执行

当前清单 32 个模块条目、34 个独立 WASM,引用文件均存在。继续按功能模块组织;某模块需要多个已有 runtime 时保留实际映射,不强制重链为一个文件。Part 文档与几何分别使用 DocumentProbe、PartBoxProbe。跨独立实例不传 native 指针,主文档状态归属不变。

已有字节缓存预加载参数:/workbench.html?moduleManifest=/modules/manifest.json&preload=Part,TechDraw。默认不预加载全部模块;共享产物地址只下载一次。缓存预取不等于 WASM 编译/初始化完成;自动工作台预测预取仍非当前已完成能力。

验证与结论

  • 218 项 Python 回归通过,耗时 24.606 秒,包含上述三个调度/预检/证据复用修复及原有边界。
  • 14 项 Node 预加载/产物测试通过,测试框架报告 0.388 秒;两个预加载入口应用相同用例。
  • TypeScript tsc --noEmit 通过。
  • 补充 33 项调度/逐步计时回归通过,耗时 14.061 秒。构建选择 --dry-run 实测 0.65 秒,仅选当前 Part 的既有目标,没有编译。
  • 本地 http://localhost:5180/module-preload.js 返回 200,确认包含本次两项预加载修复;未为验证缓存预取而下载全部大型 WASM。
  • 隔离测试没有请求模型接口、没有执行真实 WASM 编译,也不生成业务完成记录。它们证明修复行为,不能作为完整迁移完成或生产吞吐恢复的证据。

新增 observedSourceChanges、lastChangedSources、sourceChangeScanSeconds 用于显示内容变更检测及自身开销。下一窗口继续用原有逐步骤统计和新增有效业务结果衡量实际收益;不以调度轮数、重启、重复通过或文档更新作为新增交付。

部署快照:2026-09-09 05:31(Asia/Shanghai),旧回合正常结束后由原 watchdog 续启 v22,PID 3047043,第 5304 轮;当前源码 SHA-256 与运行进程状态一致。未强杀当前业务工具。后台继续执行,不能以这一快照宣称全部业务或吞吐恢复。