From 944cd61c209d07a3bf189a9840b628e29d7e28bd Mon Sep 17 00:00:00 2001 From: Daniil Date: Wed, 25 Jul 2018 20:56:43 +0700 Subject: [PATCH] Event loop benchmark --- .../core/events/SimpleEventLoopBenchmark.java | 30 +++++++++++++++++++ .../ru/core/events/SimpleEventLoopTest.java | 5 ++-- .../events/handlers/FastEventHandler.java | 11 +++++++ .../{ => handlers}/SampleEventHandler.java | 2 +- 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 event-loop/src/test/java/ru/core/events/SimpleEventLoopBenchmark.java create mode 100644 event-loop/src/test/java/ru/core/events/handlers/FastEventHandler.java rename event-loop/src/test/java/ru/core/events/{ => handlers}/SampleEventHandler.java (91%) diff --git a/event-loop/src/test/java/ru/core/events/SimpleEventLoopBenchmark.java b/event-loop/src/test/java/ru/core/events/SimpleEventLoopBenchmark.java new file mode 100644 index 0000000..7fc0a9e --- /dev/null +++ b/event-loop/src/test/java/ru/core/events/SimpleEventLoopBenchmark.java @@ -0,0 +1,30 @@ +package ru.core.events; + +import com.carrotsearch.junitbenchmarks.AbstractBenchmark; +import com.carrotsearch.junitbenchmarks.BenchmarkOptions; +import mc.core.events.LoginEvent; +import mc.core.events.SimpleEventLoop; +import org.junit.BeforeClass; +import org.junit.Test; +import ru.core.events.handlers.SampleEventHandler; + +public class SimpleEventLoopBenchmark extends AbstractBenchmark { + private static SimpleEventLoop simpleEventLoop; + private static LoginEvent testEvent; + + @BeforeClass + public static void setup(){ + simpleEventLoop = new SimpleEventLoop(); + simpleEventLoop.addEventHandler(new SampleEventHandler()); + testEvent = new LoginEvent(null); + testEvent.setDenyReason("none"); + } + + @Test + @BenchmarkOptions(warmupRounds = 5, benchmarkRounds = 15) + public void benchmark() { + for (int i = 0; i < 50_000_000; i++) { + simpleEventLoop.callEvent(testEvent); + } + } +} diff --git a/event-loop/src/test/java/ru/core/events/SimpleEventLoopTest.java b/event-loop/src/test/java/ru/core/events/SimpleEventLoopTest.java index 38ae6ba..768c702 100644 --- a/event-loop/src/test/java/ru/core/events/SimpleEventLoopTest.java +++ b/event-loop/src/test/java/ru/core/events/SimpleEventLoopTest.java @@ -4,19 +4,20 @@ import mc.core.events.LoginEvent; import mc.core.events.SimpleEventLoop; import org.junit.Assert; import org.junit.Test; +import ru.core.events.handlers.FastEventHandler; +import ru.core.events.handlers.SampleEventHandler; public class SimpleEventLoopTest { @Test public void loopWorks() { SimpleEventLoop simpleEventLoop = new SimpleEventLoop(); - simpleEventLoop.addEventHandler(new SampleEventHandler()); + simpleEventLoop.addEventHandler(new FastEventHandler()); LoginEvent testEvent = new LoginEvent(null); testEvent.setDenyReason("none"); simpleEventLoop.callEvent(testEvent); Assert.assertEquals("Event handler was not called", "Hello from SampleEventHandler!", testEvent.getDenyReason()); - } } diff --git a/event-loop/src/test/java/ru/core/events/handlers/FastEventHandler.java b/event-loop/src/test/java/ru/core/events/handlers/FastEventHandler.java new file mode 100644 index 0000000..733180d --- /dev/null +++ b/event-loop/src/test/java/ru/core/events/handlers/FastEventHandler.java @@ -0,0 +1,11 @@ +package ru.core.events.handlers; + +import mc.core.events.EventHandler; +import mc.core.events.LoginEvent; + +public class FastEventHandler { + @EventHandler + public void onPlayerLogin(LoginEvent event) { + + } +} diff --git a/event-loop/src/test/java/ru/core/events/SampleEventHandler.java b/event-loop/src/test/java/ru/core/events/handlers/SampleEventHandler.java similarity index 91% rename from event-loop/src/test/java/ru/core/events/SampleEventHandler.java rename to event-loop/src/test/java/ru/core/events/handlers/SampleEventHandler.java index d0d8411..36a7ec4 100644 --- a/event-loop/src/test/java/ru/core/events/SampleEventHandler.java +++ b/event-loop/src/test/java/ru/core/events/handlers/SampleEventHandler.java @@ -1,4 +1,4 @@ -package ru.core.events; +package ru.core.events.handlers; import mc.core.events.EventHandler; import mc.core.events.LoginEvent;