feat: 添加配置AE合成暂停检查阈值以降低上下文切换频率,默认值 100000
This commit is contained in:
parent
1ee535391f
commit
51c5d4e3d7
|
|
@ -11,6 +11,7 @@ public final class ModConfigs {
|
||||||
public static final ModConfigSpec.BooleanValue PROVIDER_ROUND_ROBIN_ENABLE;
|
public static final ModConfigSpec.BooleanValue PROVIDER_ROUND_ROBIN_ENABLE;
|
||||||
public static final ModConfigSpec.BooleanValue PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT;
|
public static final ModConfigSpec.BooleanValue PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT;
|
||||||
public static final ModConfigSpec.IntValue SMART_SCALING_MAX_MULTIPLIER;
|
public static final ModConfigSpec.IntValue SMART_SCALING_MAX_MULTIPLIER;
|
||||||
|
public static final ModConfigSpec.IntValue CRAFTING_PAUSE_THRESHOLD;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
ModConfigSpec.Builder builder = new ModConfigSpec.Builder();
|
ModConfigSpec.Builder builder = new ModConfigSpec.Builder();
|
||||||
|
|
@ -41,6 +42,12 @@ public final class ModConfigs {
|
||||||
)
|
)
|
||||||
.define("patternTerminalShowSlotsDefault", true);
|
.define("patternTerminalShowSlotsDefault", true);
|
||||||
|
|
||||||
|
CRAFTING_PAUSE_THRESHOLD = builder
|
||||||
|
.comment(
|
||||||
|
"值越大将减少AE构建合成计划过程中的 wait/notify 次数,提升吞吐但会降低调度响应性"
|
||||||
|
)
|
||||||
|
.defineInRange("craftingPauseThreshold", 100000, 100, Integer.MAX_VALUE);
|
||||||
|
|
||||||
// end general
|
// end general
|
||||||
builder.pop();
|
builder.pop();
|
||||||
|
|
||||||
|
|
@ -88,5 +95,6 @@ public final class ModConfigs {
|
||||||
COMMON_SPEC = builder.build();
|
COMMON_SPEC = builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ModConfigs() {}
|
private ModConfigs() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.extendedae_plus.mixin.ae2;
|
||||||
|
|
||||||
|
import appeng.crafting.CraftingCalculation;
|
||||||
|
import com.extendedae_plus.config.ModConfigs;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Constant;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mixin 用于增加 CraftingCalculation.handlePausing() 中 incTime 的阈值。
|
||||||
|
* 调整 CRAFTING_PAUSE_THRESHOLD 可以控制计算让出控制权的频率。
|
||||||
|
*/
|
||||||
|
@Mixin(value = CraftingCalculation.class, remap = false)
|
||||||
|
public abstract class CraftingCalculationMixin {
|
||||||
|
// 可调节的阈值:在执行 pause 检查前 handlePausing 被调用的次数。
|
||||||
|
// 增大此值可以减少 wait/notify 的频率(提升吞吐量但降低响应速度)。
|
||||||
|
@ModifyConstant(method = "handlePausing", constant = @Constant(intValue = 100))
|
||||||
|
private int modifyIncTimeThreshold(int original) {
|
||||||
|
return ModConfigs.CRAFTING_PAUSE_THRESHOLD.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
"compatibilityLevel": "JAVA_21",
|
"compatibilityLevel": "JAVA_21",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"ae2.AEProcessingPatternMixin",
|
"ae2.AEProcessingPatternMixin",
|
||||||
|
"ae2.CraftingCalculationMixin",
|
||||||
"ae2.CraftingCPUClusterMixin",
|
"ae2.CraftingCPUClusterMixin",
|
||||||
"ae2.EncodedPatternItemMixin",
|
"ae2.EncodedPatternItemMixin",
|
||||||
"ae2.QuartzCuttingKnifeItemMixin",
|
"ae2.QuartzCuttingKnifeItemMixin",
|
||||||
|
|
@ -36,18 +37,18 @@
|
||||||
"PickFromWirelessMixin",
|
"PickFromWirelessMixin",
|
||||||
"accessor.AbstractContainerScreenAccessor",
|
"accessor.AbstractContainerScreenAccessor",
|
||||||
"accessor.ScreenAccessor",
|
"accessor.ScreenAccessor",
|
||||||
"ae2.menu.CraftConfirmMenuGoBackMixin",
|
|
||||||
"ae2.accessor.AEBaseScreenAccessor",
|
"ae2.accessor.AEBaseScreenAccessor",
|
||||||
"ae2.accessor.AEBaseScreenInvoker",
|
"ae2.accessor.AEBaseScreenInvoker",
|
||||||
"ae2.accessor.MEStorageScreenAccessor",
|
"ae2.accessor.MEStorageScreenAccessor",
|
||||||
"ae2.accessor.PatternAccessTermScreenAccessor",
|
"ae2.accessor.PatternAccessTermScreenAccessor",
|
||||||
"ae2.accessor.PatternAccessTermScreenSlotsRowAccessor",
|
"ae2.accessor.PatternAccessTermScreenSlotsRowAccessor",
|
||||||
"ae2.client.gui.InterfaceScreenMixin",
|
|
||||||
"ae2.client.gui.AEBaseScreenMixin",
|
"ae2.client.gui.AEBaseScreenMixin",
|
||||||
|
"ae2.client.gui.InterfaceScreenMixin",
|
||||||
"ae2.client.gui.PatternEncodingTermScreenMixin",
|
"ae2.client.gui.PatternEncodingTermScreenMixin",
|
||||||
"ae2.client.gui.PatternProviderCloseMixin",
|
"ae2.client.gui.PatternProviderCloseMixin",
|
||||||
"ae2.client.gui.PatternProviderScreenMixin",
|
"ae2.client.gui.PatternProviderScreenMixin",
|
||||||
"ae2.client.gui.SlotGridLayoutMixin",
|
"ae2.client.gui.SlotGridLayoutMixin",
|
||||||
|
"ae2.menu.CraftConfirmMenuGoBackMixin",
|
||||||
"extendedae.accessor.GuiExPatternTerminalAccessor",
|
"extendedae.accessor.GuiExPatternTerminalAccessor",
|
||||||
"extendedae.accessor.GuiExPatternTerminalSlotsRowAccessor",
|
"extendedae.accessor.GuiExPatternTerminalSlotsRowAccessor",
|
||||||
"extendedae.client.HighlightButtonMixin",
|
"extendedae.client.HighlightButtonMixin",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user