介绍
关于
FastSuite 为所有使用 JSON 配方系统的模组提升了配方匹配性能,而非仅针对某一特定子集的配方。其实现方式在各大版本间有所变化——当前实现(7.0.0+)采用基于索引的算法。
实现方式
FastSuite 在其生命周期内使用过三种不同的策略:
列表重排序(4.0.0 及更早版本) —— 配方存储在一个移至前端的列表中,因此频繁访问的配方会逐渐向前移动,在后续查找时查找成本更低。首次访问与原生速度相当;对深层配方的后续访问提升超过 95%,而对已靠近前端的配方影响很小。
并发匹配(4.1.0 – 6.x) —— 对于任何配方数量超过 100 的配方类型,匹配工作会分散到多个线程而非单线程。这在 All The Mods 8 中带来了 10 倍至 12 倍的加速,并且比重排序模型兼容性更好、更稳健(例如它可与 Polymorph 配合使用,且在首次匹配时即生效)。
索引匹配(7.0.0+) —— 当前方法完全放弃了并发,转而采用基于索引的算法。配方被建立索引,因此只测试可行的候选者,而非扫描完整列表。这使得为某个输入匹配所有配方的速度比原生快约 2 倍至 4.5 倍,且无需多线程,也无需每次匹配写入数据:
[索引] – 为金合欢木板匹配所有配方平均耗时 93541.68 纳秒
[原生] – 为金合欢木板匹配所有配方平均耗时 416312.28 纳秒
[索引] – 为木棍匹配所有配方平均耗时 203072.3 纳秒
[原生] – 为木棍匹配所有配方平均耗时 523836.38 纳秒
[索引] – 为工作台匹配所有配方平均耗时 104967.54 纳秒
[原生] – 为工作台匹配所有配方平均耗时 236834.45 纳秒
[索引] – 为黑色潜影盒匹配所有配方平均耗时 212810.42 纳秒
[原生] – 为黑色潜影盒匹配所有配方平均耗时 453240.12 纳秒
[索引] – 为匹配失败的情况匹配所有配方平均耗时 243105.69 纳秒
[原生] – 为匹配失败的情况匹配所有配方平均耗时 918821.25 纳秒
如果你在想“嘿等等,4.0.0 – 6.0.0 的那些数字听起来更好”,嗯,原版的变化削弱了那些优势,以至于并发匹配几乎等同于单线程匹配。现在的基线快得多,但索引仍然可以做得更好。
兼容性
本模组旨在保持非侵入性,应可与所有其他模组配合使用,除非另一个模组也替换了配方管理器。它与 KubeJS 和 CraftTweaker 等配方修改模组兼容,并且不会与 JEI 产生任何问题。
FastSuite 不会替换 FastWorkbench 或 FastFurnace,不过如果安装了它,它们的效果会有所减弱,因为部分工作被转移到了 FastSuite。为了获得最大化的配方性能,我仍然建议三者全部安装。

评论
登录后评论和评分