From d231930c6b4a93c593ec0912da4f2ba11aab4646 Mon Sep 17 00:00:00 2001 From: Xiao-no-love <140927721+Xiao-no-love@users.noreply.github.com> Date: Tue, 13 Oct 2026 17:45:24 +0800 Subject: [PATCH] perf(payload): fast-path idle dimensions + scoped ownership MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充上一版按维度精细化独占: - MainThreadPhaseCoordinator.runScoped 加快速路径:涉及维度当前都没在 tick 时, 直接执行 action,跳过 hold/cancel/schedule 与 managedBlock 往返。 多玩家时绝大多数 payload 落在维度空闲窗口,此路径消除其交接开销。 --- .../modzuozhi/core/compat/MainThreadPhaseCoordinator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/dev/modzuozhi/core/compat/MainThreadPhaseCoordinator.java b/src/main/java/dev/modzuozhi/core/compat/MainThreadPhaseCoordinator.java index d692ceb..c78db58 100644 --- a/src/main/java/dev/modzuozhi/core/compat/MainThreadPhaseCoordinator.java +++ b/src/main/java/dev/modzuozhi/core/compat/MainThreadPhaseCoordinator.java @@ -97,6 +97,13 @@ public final class MainThreadPhaseCoordinator { throw new IllegalStateException("Scoped phase inside synchronous Sable handoff would deadlock: " + reason); List affected = loops(server).stream() .filter(l -> scopeDimensions.contains(l.getLevel().dimension())).toList(); + // 快速路径:涉及维度当前都没在 tick -> 无需挂起/等待,直接执行。 + // 多玩家时绝大多数 payload 落在「维度空闲窗口」,此路径避免每次 drain 的 + // hold/cancel/schedule 开销与 managedBlock 往返。 + if (affected.stream().noneMatch(LevelTickLoop::isTicking)) { + action.run(); + return; + } affected.forEach(loop -> loop.holdForMainThread(true)); long began = System.nanoTime(); try {