红石编译器

红石编译器

JIT 编译红石电路为字节码,以加快大型机器的运行速度。

优化

image

红石编译器

将红石电路即时编译为字节码,大型红石装置性能提升 15~100 倍。


问题所在

如果你曾在 Minecraft 中建造过红石计算机、大型自动分类系统或多位 ALU,很可能遇到过这些问题:

  • TPS 骤降——原版逐个扫描每条红石线,大型电路每刻消耗大量时间。
  • 服务器卡顿——某个玩家的巨型红石建筑拖累整个服务器。

红石编译器解决了这个问题。


工作原理

传统红石更新流程:

信号变化 → 遍历所有连接的导线 → 逐线重新计算能量 → 输出

红石编译器取而代之的是:

信号变化 → 调用预编译的字节码 → 一次方法调用,所有逻辑计算完成 → 输出

关键技术:ASM 在运行时动态生成 Java 类,将整个电路的逻辑编译为原生 JVM 字节码。随后 JVM 的即时编译器进一步将其优化为原生机器码,达到手写代码级别的性能。


性能(理论估算)

基于 JVM 字节码执行与原版红石更新的理论分析,以下是典型场景的预期性能表现:

场景 1:单条红石线(15 个红石粉)

规模:15 个红石粉

结果:无显著差异。 小电路在原版中已足够快;编译开销大致抵消了增益。


场景 2:中继器信号链(64 个中继器)

规模:64 个中继器串联

指标 原版 红石编译器 提升
每次更新时间 ~4.2ms ~0.15ms ~28 倍

原因:原版会逐个扫描所有 64 个中继器以重新计算每次更新时的信号强度。编译版本则通过一次方法调用完成。注意:中继器延迟(每级 1 刻)是原版的设计——模组完全保留,不会改变传播时序。


场景 3:8 位加法器

规模:约 200 个红石组件(导线 + 中继器 + 比较器)

指标 原版 红石编译器 提升
每次操作 ~0.8ms ~0.02ms ~40 倍
1000 次连续操作 ~800ms ~20ms ~40 倍

原因:原版每次加法会触发大量导线扫描。编译版本:所有逻辑集中在一个方法中。


场景 4:完整 ALU(4 位,8 种操作)

规模:约 800 个组件,8 种操作(ADD/SUB/AND/OR/XOR/NOT/SHL/SHR)

指标 原版 红石编译器 提升
单次 ALU 操作 ~3.5ms ~0.06ms ~58 倍
最大模拟时钟频率 ~5Hz ~300Hz ~60 倍

场景 5:大型静态逻辑机器(2000+ 组件)

规模:大规模组合逻辑(例如红石绘图仪、门阵列)

指标 原版 红石编译器 提升
单次更新 ~12ms ~0.12ms ~100 倍
服务器 TPS 影响 严重(约 8 TPS) 可忽略(约 19.8 TPS) 保持满 TPS

场景 6:动态时钟电路

规模:包含大量中继器锁存器、定时器、时序逻辑的电路

结果:无显著提升。 动态电路依赖逐刻的状态转换,适合原版处理。红石编译器会自动跳过这些电路(可通过 skipRedstoneWire 配置)。


总结

电路类型 推荐? 预期增益
单条红石线 否 无
中继器链 ✅ 强烈推荐 ~28 倍
加法器 / ALU ✅ 强烈推荐 40~60 倍
大型组合逻辑 ✅ 高度推荐 60~100 倍
动态时序电路 ❌ 不适用 无

核心结论:电路越大、组合逻辑越多,红石编译器的效果就越明显。


支持的红石组件

  • 红石线 ✅
  • 中继器 ✅
  • 比较器——比较模式 ✅
  • 比较器——减法模式 ✅
  • 非门逻辑(反向) ✅
  • 大于逻辑 ✅

配置

7 个可调参数,可通过 Mod Menu + Cloth Config GUI 调整:

  1. 启用开关——一键禁用,恢复原版行为
  2. 检测范围——以玩家为中心的区块半径(1~32),默认 8
  3. 编译模式——激进(全部)/ 普通(中等)/ 保守(仅小型),平衡性能与开销
  4. 每刻最大电路数——限制批量编译时的卡顿
  5. 调试模式——详细日志输出,用于故障排查
  6. 记录已编译电路——追踪每次编译
  7. 跳过红石线——仅编译中继器/比较器,用于测试

注意:Cloth Config API 是可选的。如果没有它,请手动编辑 config/redstonecompiler.json。


兼容性

需求

  • Minecraft 1.20.1
  • Fabric Loader ≥ 0.15.11
  • Fabric API——必需
  • Java 17+

推荐搭档

  • Cloth Config API——图形化配置界面
  • Mod Menu——模组列表中的配置入口

已知冲突

  • 无已知冲突。该模组仅拦截红石更新调用,从不修改原版方块行为。
  • 可与 Lithium、Alternate Current 及其他优化模组安全共存(编译在红石更新之前完成,互不干扰)。