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 PATTERN_TERMINAL_SHOW_SLOTS_DEFAULT;
|
||||
public static final ModConfigSpec.IntValue SMART_SCALING_MAX_MULTIPLIER;
|
||||
public static final ModConfigSpec.IntValue CRAFTING_PAUSE_THRESHOLD;
|
||||
|
||||
static {
|
||||
ModConfigSpec.Builder builder = new ModConfigSpec.Builder();
|
||||
|
|
@ -41,6 +42,12 @@ public final class ModConfigs {
|
|||
)
|
||||
.define("patternTerminalShowSlotsDefault", true);
|
||||
|
||||
CRAFTING_PAUSE_THRESHOLD = builder
|
||||
.comment(
|
||||
"值越大将减少AE构建合成计划过程中的 wait/notify 次数,提升吞吐但会降低调度响应性"
|
||||
)
|
||||
.defineInRange("craftingPauseThreshold", 100000, 100, Integer.MAX_VALUE);
|
||||
|
||||
// end general
|
||||
builder.pop();
|
||||
|
||||
|
|
@ -88,5 +95,6 @@ public final class ModConfigs {
|
|||
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",
|
||||
"mixins": [
|
||||
"ae2.AEProcessingPatternMixin",
|
||||
"ae2.CraftingCalculationMixin",
|
||||
"ae2.CraftingCPUClusterMixin",
|
||||
"ae2.EncodedPatternItemMixin",
|
||||
"ae2.QuartzCuttingKnifeItemMixin",
|
||||
|
|
@ -36,18 +37,18 @@
|
|||
"PickFromWirelessMixin",
|
||||
"accessor.AbstractContainerScreenAccessor",
|
||||
"accessor.ScreenAccessor",
|
||||
"ae2.menu.CraftConfirmMenuGoBackMixin",
|
||||
"ae2.accessor.AEBaseScreenAccessor",
|
||||
"ae2.accessor.AEBaseScreenInvoker",
|
||||
"ae2.accessor.MEStorageScreenAccessor",
|
||||
"ae2.accessor.PatternAccessTermScreenAccessor",
|
||||
"ae2.accessor.PatternAccessTermScreenSlotsRowAccessor",
|
||||
"ae2.client.gui.InterfaceScreenMixin",
|
||||
"ae2.client.gui.AEBaseScreenMixin",
|
||||
"ae2.client.gui.InterfaceScreenMixin",
|
||||
"ae2.client.gui.PatternEncodingTermScreenMixin",
|
||||
"ae2.client.gui.PatternProviderCloseMixin",
|
||||
"ae2.client.gui.PatternProviderScreenMixin",
|
||||
"ae2.client.gui.SlotGridLayoutMixin",
|
||||
"ae2.menu.CraftConfirmMenuGoBackMixin",
|
||||
"extendedae.accessor.GuiExPatternTerminalAccessor",
|
||||
"extendedae.accessor.GuiExPatternTerminalSlotsRowAccessor",
|
||||
"extendedae.client.HighlightButtonMixin",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user