创建FastTrack

创建FastTrack

一个微小的独立Forge 1.20.1模组,通过将轨道网络洪水填充优化应用于已发布的Create模组,修复了Create铁路代码中的性能热点。

玩家运载

TrackFastRack

一个独立的 Forge 1.20.1 小模组,通过将轨道网络洪泛填充优化应用到已发布的 Create 模组中,来修复其铁路代码中的性能热点——无需使用分叉版 Create。

问题所在

每当放置或破坏轨道时,Create 的 TrackGraph#findDisconnectedGraphs 会对整个铁路网络执行连通分量洪泛填充。在已发布的 Create(≤ 6.0.8)中,BFS 边界使用 ArrayList,通过 ArrayList#remove(0) 从头部弹出元素会在每次弹出时移动整个底层数组——导致洪泛填充的时间复杂度为 O(n²)。

在大型铁路网络(约 8 万个节点)上,单次轨道修改可能需要遍历数十亿个元素,在建造或改线长途列车线路时会导致明显的卡顿和延迟尖峰。

修复方式

本模组注入了一个 Mixin,将边界替换为 ArrayDeque(poll() 为 O(1)),并将 stream().findFirst() 替换为普通迭代器,使洪泛填充变为 O(n)。该改动是 Create 分叉版提交 272e97604(“优化列车网络热点路径”)的忠实移植。

验证是否生效

在游戏启动时,模组会记录 TrackGraph flood-fill self-test OK,证明优化后的方法在运行时正确绑定。