diff --git a/event-loop/src/main/java/mc/core/events/async/AsyncEventLoop.java b/event-loop/src/main/java/mc/core/events/async/AsyncEventLoop.java index 9a0b190..3145785 100644 --- a/event-loop/src/main/java/mc/core/events/async/AsyncEventLoop.java +++ b/event-loop/src/main/java/mc/core/events/async/AsyncEventLoop.java @@ -6,16 +6,14 @@ import mc.core.events.Event; import java.lang.reflect.InvocationTargetException; import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.*; @Slf4j public class AsyncEventLoop extends AdvancedEventLoop { - private static final double EMAPeriod = (2D / (50D + 1D)); + private static final double emaPeriod = (2D / (50D + 1D)); + private final ExecutorService preEventExecutor = new ThreadPoolExecutor(2, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>()); @Getter private double avgOverhead = 0; - private ExecutorService preEventExecutor = Executors.newSingleThreadExecutor(); @Override public void callEvent(Event event) { @@ -77,7 +75,7 @@ public class AsyncEventLoop extends AdvancedEventLoop { if (avgOverhead == 0) avgOverhead = overhead; else - avgOverhead = (overhead - avgOverhead) * EMAPeriod + avgOverhead; + avgOverhead = (overhead - avgOverhead) * emaPeriod + avgOverhead; } } diff --git a/event-loop/src/test/java/ru/core/events/AsyncEventLoopBenchmark.java b/event-loop/src/test/java/ru/core/events/AsyncEventLoopBenchmark.java index 37ebe83..193fc6f 100644 --- a/event-loop/src/test/java/ru/core/events/AsyncEventLoopBenchmark.java +++ b/event-loop/src/test/java/ru/core/events/AsyncEventLoopBenchmark.java @@ -10,7 +10,7 @@ import org.junit.Test; import ru.core.events.handlers.AsyncEventHandler; public class AsyncEventLoopBenchmark extends AbstractBenchmark { - private static final int ITERATIONS = 600; + private static final int ITERATIONS = 200; private static AsyncEventLoop asyncEventLoop; private static AdvancedEventLoop advancedEventLoop; private static LoginEvent testEvent; @@ -19,8 +19,12 @@ public class AsyncEventLoopBenchmark extends AbstractBenchmark { public static void setup() { asyncEventLoop = new AsyncEventLoop(); asyncEventLoop.addEventHandler(new AsyncEventHandler()); + asyncEventLoop.addEventHandler(new AsyncEventHandler()); + asyncEventLoop.addEventHandler(new AsyncEventHandler()); advancedEventLoop = new AdvancedEventLoop(); advancedEventLoop.addEventHandler(new AsyncEventHandler()); + advancedEventLoop.addEventHandler(new AsyncEventHandler()); + advancedEventLoop.addEventHandler(new AsyncEventHandler()); testEvent = new LoginEvent(null); testEvent.setDenyReason("none"); }