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

红石编译器
将红石电路即时编译为字节码,大型红石装置性能提升 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~32),默认 8
- 编译模式——激进(全部)/ 普通(中等)/ 保守(仅小型),平衡性能与开销
- 每刻最大电路数——限制批量编译时的卡顿
- 调试模式——详细日志输出,用于故障排查
- 记录已编译电路——追踪每次编译
- 跳过红石线——仅编译中继器/比较器,用于测试
注意: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 及其他优化模组安全共存(编译在红石更新之前完成,互不干扰)。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。