铷 ( Salut_46 )

铷 ( Salut_46 )

围绕结构的生成计算进行精确自动优化。支持 Fabric 和 Fabric API,无需配置。

性能

Rubidium 作者 Salut_46

当结构掩埋的原版贡献值已确知恰好为零时,Rubidium 会跳过某些运算。对于所有其他情况,它会保留原始公式,且不会替换噪声、种子或生物群系算法。

标准安装会保留 Minecraft 的渲染、图形队列和生成调度。无需菜单或配置文件。当 C2ME 存在时,该模组会自动禁用其计算集成以避免重叠;完整的模组组合仍需单独测试。

这个首个实验性版本适用于 Fabric 1.21.1、1.21.11、26.1 和 26.2。它随附源代码和测试结果。观察到的生成改进幅度有限且因场景而异。并未证明存在普遍的 FPS 提升,也没有证明不存在卡顿。

该名称来自铷,一种原子序数为 37 的碱金属。技术标识符:rubidium_flow。独立项目,与 Forge 的 Rubidium 无关。

测量与决策 —— Rubidium 0.1.0-alpha.1

选定结果

该版本仅包含精确计算捷径。在正常安装中,它不包含生成调节器或主动渲染预算。下文中原型的图形增益并不描述所交付的产品。

参考与方法

“参考”指搭载 Fabric Loader、Fabric API 及相同基准测试设置、并禁用 Rubidium 优化的 Minecraft。这不是不带 Fabric 的 Minecraft。机器:Ryzen 5 PRO 7535U,集成 Radeon,12 个逻辑处理器,最大 Java 内存 4 GiB,Java 21。客户端:1280 × 720,视距 8 个区块,模拟距离 5,VSync 关闭,限制 260 对应无上限模式。1.21.1 表示 Fancy;1.21.11 表示 CUSTOM,采用其默认设置及上述参数。不要直接比较不同版本之间的 FPS。

每次图形测试运行 60 秒,在 20 秒预热后,在全新地形中进行四次停留,间隔 15 秒。修订版 2 将预热相机固定为 (60.5,110,-40.5)。世界为种子 123456789 的全新副本。没有基准测试或构建同时运行。有效运行表示没有失焦帧且没有菜单界面帧。

专用生成测试 1.21.1

144 个区块达到 FULL 阶段,请求并发数为 8,预热阶段另有 16 个区块,票据保留并有五秒钟的静默。顺序为 A/B/B/A,每个变体运行两次。选定的计算代码在 B 中启用,Pulse 调节器已禁用。专用服务器不使用图形预算。

测量项 参考 Rubidium 选定捷径
144 个区块的平均时间 11.541 s 11.391 s
运行 1 11.580 s 11.371 s
运行 2 11.501 s 11.411 s
测量到的 > 50 ms 的 tick 数 0 0

仅针对此场景,时间约减少 1.3%。两次重复并不能证明统计显著性,也不能证明普遍优势。数据来源:final-perf-a1、final-perf-b1、final-perf-b2、final-perf-a2。历史字段 gcPauseCollectionMs 测量的是 Java 报告的收集时间,而非精确的暂停时长。tick 时长不是 FPS。

已弃用的图形原型 —— 1.21.1

初始试验,修订版 1:参考 285.87 FPS,16 帧 >50 ms,P99 14.064 ms;无 Pulse 的图形预算 305.74 FPS,12 帧 >50 ms,P99 14.086 ms。P99 并未改善。使用 Pulse 时,仅剩 17 个可见区段,而参考为 74 个:该原型被否决。

新试验,修订版 2,在 Fabric 开发环境中:

运行 平均 FPS P99 (ms) > 50 ms 的帧数 最大值 (ms) 最后一次采样时的区段数
client-final-a1 298.73 15.895 22 326.88 70
client-final-b1 379.30 11.272 10 100.31 76
client-final-b2 389.76 11.299 16 228.24 84
client-final-a2 739.19 7.035 11 130.92 163
client-final-b3 532.38 8.894 22 256.42 77

A 表示参考。B 表示精确计算以及 2 ms/64 任务的图形预算,不使用 Pulse。A1/B1/B2 在上午进行;A2/B3 之前有约五小时的中断。不要将这些序列汇总为单一百分比增益。最后一次 B3 低于 A2,且末尾显示的地形更少。未测量负载、温度或电源的变化:会话之间差异的确切原因仍然未知。这种不确定性以及不利结果促使在发布版中放弃图形预算。

最后一次采样中的区段数并非所有区块到达时间的精确度量。还检查了捕获数据。这些测试不允许做出任何普遍 FPS 提升的承诺。

交付的 JAR:使用普通 Fabric 的运行时检查

这些试验使用重映射的 JAR、生产版 Minecraft 客户端和独立的基准测试。它们验证加载、渲染、运行以及关闭时保存。图形预算保持禁用。1.21.11 参考使用先前候选版本并禁用其所有优化;活动运行使用最终 JAR。

版本 加载与运行 图形预算启用 Pulse 线程 最后一次采样时的区段数
1.21.11 成功 否 0 266
1.21.1 成功 否 0 84

1.21.1 的“冒烟”运行在独立的基准测试标识符下检查正常安装:零个 Pulse 线程且不重定向渲染队列。它不构成与较早开发试验的性能配对。1.21.11 试验未明确抵消空闲时的自动 FPS 限制。这些操作性检查被归类为 performanceValid=false,不用于声称 FPS 提升。原始帧时间被保留以便追溯。

计算检查与限制

48 个单元测试通过,包括源代码中保留的原型工具。每个 Minecraft 版本在 Fabric 服务器中执行了 375,956 次真实方法与原版公式的比较,然后在关闭前保存维度。网格、边界值和伪随机双精度值:结果逐位相同,审计中进行了 NaN 归一化。

在 1.21.1 上,NOISE 阶段的方块和生物群系指纹在 64/64 个主世界区块、16/16 个下界、16/16 个末地上完全相同。两个主世界参考也一致。完整性审计与性能测量相互独立。

FULL 最终世界比较在两个参考自身之间就出现了分歧。这些结果仍无定论:NOISE 阶段指纹并不能证明重新加载的最终存档完全等价。26.x 移植版本没有图形测试,也没有 FPS 测量。与其他模组的组合并未获得普遍认证。

JSON、JAR 指纹和测量来源均已提供。P99 使用上秩;平均 FPS 是平均帧时间的倒数。来源允许仅在独立基准测试中重新激活原型,以复现研究。该模组仍是一个范围有限的实验性首个版本。