跳到正文

LazyDFU

作者:astei

通过延后非必要的初始化,让游戏启动更快

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

LazyDFU 是一个 Minecraft 优化模组,它推迟不必要的初始化工作,使其仅在需要时执行。具体来说,它使 DataFixerUpper 的初始化变得“惰性”——也就是说,它不会立即创建将数据从旧版本 Minecraft 迁移到新版本所需的规则,直到它真正需要这样做。

此模组适用于 Fabric/Quilt

兼容性

LazyDFU 0.1.2 兼容 Minecraft 1.14 至 1.18.2,并且可在客户端和服务端运行。

LazyDFU 0.1.3 兼容 Minecraft 1.19 及以上版本,不过 Mojang 现在在服务端实现了 LazyDFU 提供的功能。客户端默认仍会初始化所有 DFU 规则,因此 LazyDFU 会挂钩到启用 DFU 规则烘焙的原生客户端功能,并将其变为空操作。

然而,自 Minecraft 1.19.4 及以上版本起,Mojang 已对 DFU 初始化进行了大幅优化,在许多配置下此模组已不再必要。它将继续为旧版本 Minecraft 提供支持。

赞助我!

这个模组让 Minecraft 对你来说变得可玩了吗?赞助一点钱,这样我就能继续开发它。

为什么它有效?

DataFixerUpper(通常缩写为 DFU)是 Minecraft 中负责处理从旧版本 Minecraft 到新版本世界升级的组件。DFU 在 Minecraft 启动过程中很早就被初始化——事实上,它在游戏窗口出现之前就已初始化。它的设计过度复杂得可笑,而且非常慢,但这就是 Mojang 提供给我们的东西。

作为 DFU 初始化过程的一部分,它会缓存从旧版本转换到 Minecraft 所需的规则,途经中间每一个版本,直到正在启动的游戏版本。此过程在后台进行,但它_极其_缓慢,因为它既消耗 CPU 又消耗内存。在 Minecraft 1.16.5 上,我在一台 Ryzen 9 3900X 台式机(2019 年发布的高端桌面 CPU)上测得此过程耗时 9 秒,在一台搭载 i5-8250U 的笔记本电脑(2017 年的中端笔记本芯片)上耗时 57 秒。

LazyDFU 所做的就是停止此过程——它让 DFU 初始化,但会强制它不缓存所有这些规则。因此,DFU 规则仅在需要转换世界时才会编译。这意味着如果 LazyDFU 强制游戏编译迁移规则,你可能会看到卡顿峰值,但一旦完成就不会有性能损失。

向我证明

我录制了一段视频,向你展示 LazyDFU 有多有效。

与其他模组的比较

与其他模组相比,LazyDFU 的主要优势是_简单_、_安全_,并且对游戏_影响小_。

  • LazyDFU 是一个非常简单的模组。整个模组大约只有十几行代码,几乎是一个模组能做到的最不复杂的程度,同时仍能带来巨大的好处。(这也意味着它是用来试验新 Mixin 平台的理想模组!)
  • LazyDFU 高度兼容且安全。LazyDFU 极不可能与其他模组冲突。此模组基于 Paper 中一个类似的补丁,该补丁已使用了一年多,没有报告过迁移到更新版本 Minecraft 的问题。(Paper 此后已改为用其自己高度优化的实现替换 Mojang 的数据修复器。)

评论

登录后评论和评分

astei 的其他作品

查看全部 →