diff --git a/.github/checkstyle/checkstyle.xml b/.github/checkstyle/checkstyle.xml index 643c0d45e..02fb3f26e 100644 --- a/.github/checkstyle/checkstyle.xml +++ b/.github/checkstyle/checkstyle.xml @@ -166,7 +166,7 @@ - + diff --git a/benchmark/pom.xml b/benchmark/pom.xml new file mode 100644 index 000000000..bb80ced4c --- /dev/null +++ b/benchmark/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + org.dromara.dynamictp + dynamic-tp-all + ${revision} + ../pom.xml + + dynamic-tp-benchmark + + + + org.dromara.dynamictp + dynamic-tp-core + + + + org.dromara.dynamictp + dynamic-tp-extension-agent + + + + org.openjdk.jmh + jmh-core + + + org.openjdk.jmh + jmh-generator-annprocess + + + + diff --git a/benchmark/src/main/java/org/dromara/dynamictp/benchmark/BenchmarkRunner.java b/benchmark/src/main/java/org/dromara/dynamictp/benchmark/BenchmarkRunner.java new file mode 100644 index 000000000..28ccafa33 --- /dev/null +++ b/benchmark/src/main/java/org/dromara/dynamictp/benchmark/BenchmarkRunner.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.dromara.dynamictp.benchmark; + +import org.openjdk.jmh.results.format.ResultFormatType; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +/** + * BenchmarkRunner related + * + * @author yanhom + * @since 1.2.1 + **/ +public class BenchmarkRunner { + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(ExecutorBenchmark.class.getSimpleName()) + .resultFormat(ResultFormatType.JSON) + .result("executor-benchmark-results.json") + .build(); + + new Runner(options).run(); + } +} + diff --git a/benchmark/src/main/java/org/dromara/dynamictp/benchmark/ExecutorBenchmark.java b/benchmark/src/main/java/org/dromara/dynamictp/benchmark/ExecutorBenchmark.java new file mode 100644 index 000000000..c185f88d6 --- /dev/null +++ b/benchmark/src/main/java/org/dromara/dynamictp/benchmark/ExecutorBenchmark.java @@ -0,0 +1,186 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.dromara.dynamictp.benchmark; + +import com.google.common.collect.Sets; +import org.dromara.dynamictp.core.executor.DtpExecutor; +import org.dromara.dynamictp.core.support.ThreadPoolBuilder; +import org.dromara.dynamictp.core.support.task.wrapper.TaskWrappers; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Threads; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * ExecutorBenchmark related + * + * @author yanhom + * @since 1.2.1 + **/ +@BenchmarkMode(Mode.Throughput) +@OutputTimeUnit(TimeUnit.SECONDS) +@State(Scope.Thread) +@Warmup(iterations = 5) +public class ExecutorBenchmark { + + @Param({"100", "2000", "4000", "6000", "8000"}) + private int max; + + @Param({"MEDIUM"}) + private TaskType taskType; + + private ThreadPoolExecutor standardExecutor; + private DtpExecutor dtpExecutor; + + public enum TaskType { + // 轻量级任务,执行时间很短 + LIGHT, + // 中等任务,有一定计算量 + MEDIUM, + // 重量级任务,执行时间较长或有IO操作 + HEAVY + } + + @Setup + public void setup() { + standardExecutor = new ThreadPoolExecutor( + 4, + 8, + 60L, + TimeUnit.SECONDS, + new LinkedBlockingQueue<>(1024), + new ThreadFactory() { + private final AtomicInteger counter = new AtomicInteger(1); + @Override + public Thread newThread(Runnable r) { + return new Thread(r, "standard-pool-" + counter.getAndIncrement()); + } + }, + new ThreadPoolExecutor.CallerRunsPolicy() + ); + + dtpExecutor = ThreadPoolBuilder.newBuilder() + .corePoolSize(4) + .maximumPoolSize(8) + .keepAliveTime(60) + .threadFactory("dtp-test-pool") + .runTimeout(100) + .queueCapacity(100) + .queueCapacity(1024) + .taskWrappers(TaskWrappers.getInstance().getByNames(Sets.newHashSet("ttl", "mdc"))) + .rejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()) + .buildDynamic(); + } + + @TearDown + public void tearDown() { + standardExecutor.shutdown(); + dtpExecutor.shutdown(); + try { + if (!standardExecutor.awaitTermination(5, TimeUnit.SECONDS)) { + standardExecutor.shutdownNow(); + } + if (!dtpExecutor.awaitTermination(5, TimeUnit.SECONDS)) { + dtpExecutor.shutdownNow(); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + @Benchmark + @Threads(1) + public void testStandardSubmit(Blackhole bh) { + executeTasksAndWait(standardExecutor, bh); + } + + @Benchmark + @Threads(1) + public void testDtpSubmit(Blackhole bh) { + executeTasksAndWait(dtpExecutor, bh); + } + + @Benchmark + @Threads(4) + public void test8ThreadsStandardSubmit(Blackhole bh) { + executeTasksAndWait(standardExecutor, bh); + } + + @Benchmark + @Threads(4) + public void test8ThreadsDtpSubmit(Blackhole bh) { + executeTasksAndWait(dtpExecutor, bh); + } + + private void executeTasksAndWait(ThreadPoolExecutor executor, Blackhole bh) { + executor.submit(() -> { + try { + int res = 0; + switch (taskType) { + case LIGHT: + res = max * max; + break; + case MEDIUM: + res = calculatePrimes(max); + break; + case HEAVY: + res = calculatePrimes(max); + Thread.sleep(2); + break; + default: + break; + } + bh.consume(res); + return res; + } catch (Exception e) { + return -1; + } + }); + } + + private int calculatePrimes(int max) { + int count = 0; + for (int i = 2; i <= max; i++) { + boolean isPrime = true; + for (int j = 2; j <= Math.sqrt(i); j++) { + if (i % j == 0) { + isPrime = false; + break; + } + } + if (isPrime) { + count++; + } + } + return count; + } +} diff --git a/benchmark/src/main/resources/executor-benchmark-results.json b/benchmark/src/main/resources/executor-benchmark-results.json new file mode 100644 index 000000000..65ad47c41 --- /dev/null +++ b/benchmark/src/main/resources/executor-benchmark-results.json @@ -0,0 +1,864 @@ +[ + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testDtpSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "100", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 835879.4802796174, + "scoreError" : 19897.455636183637, + "scoreConfidence" : [ + 815982.0246434337, + 855776.935915801 + ], + "scorePercentiles" : { + "0.0" : 772808.9079652693, + "50.0" : 845641.620886573, + "90.0" : 857708.265505212, + "95.0" : 859526.055539222, + "99.0" : 859679.8298281895, + "99.9" : 859679.8298281895, + "99.99" : 859679.8298281895, + "99.999" : 859679.8298281895, + "99.9999" : 859679.8298281895, + "100.0" : 859679.8298281895 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 837083.6811061229, + 836988.3955275505, + 807880.9110136031, + 772808.9079652693, + 773014.3159528865 + ], + [ + 794317.0851141195, + 847147.8725064938, + 856735.6099320437, + 845641.620886573, + 855316.7163251701 + ], + [ + 844726.5474328864, + 852709.3252940127, + 855230.0055931485, + 837438.7249005582, + 859167.2488649645 + ], + [ + 852366.293103543, + 859679.8298281895, + 834931.1398763611, + 851008.8835481262, + 848208.331094282 + ], + [ + 844581.5439933728, + 839751.308302802, + 853500.3644639668, + 849520.1555104096, + 787232.1888539805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testDtpSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "2000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 96505.45836229522, + "scoreError" : 1076.1715196902455, + "scoreConfidence" : [ + 95429.28684260497, + 97581.62988198547 + ], + "scorePercentiles" : { + "0.0" : 93670.57370562815, + "50.0" : 96594.59497566153, + "90.0" : 98126.05019405008, + "95.0" : 98144.98322822564, + "99.0" : 98145.49775872249, + "99.9" : 98145.49775872249, + "99.99" : 98145.49775872249, + "99.999" : 98145.49775872249, + "99.9999" : 98145.49775872249, + "100.0" : 98145.49775872249 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 96027.6890203491, + 95579.09907433369, + 96573.59109296952, + 94768.51352262578, + 98143.78265706633 + ], + [ + 97444.16733327185, + 95018.93368270407, + 94408.58197815283, + 97569.1531838222, + 97388.60317209976 + ], + [ + 98015.08841042618, + 97326.94670397948, + 98145.49775872249, + 98108.83556957358, + 96343.26156327194 + ], + [ + 96594.59497566153, + 96886.40956516683, + 98015.47935740056, + 96182.56319019997, + 93888.605026665 + ], + [ + 94513.96854793667, + 93670.57370562815, + 96352.12523005734, + 97556.16618325676, + 98114.22855203926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testDtpSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "4000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 40681.04605703, + "scoreError" : 334.638562946629, + "scoreConfidence" : [ + 40346.40749408337, + 41015.68461997663 + ], + "scorePercentiles" : { + "0.0" : 39276.96271051711, + "50.0" : 40772.080025229414, + "90.0" : 41174.442462232786, + "95.0" : 41201.323486827634, + "99.0" : 41207.32032574715, + "99.9" : 41207.32032574715, + "99.99" : 41207.32032574715, + "99.999" : 41207.32032574715, + "99.9999" : 41207.32032574715, + "100.0" : 41207.32032574715 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41187.330862682094, + 40860.97643228561, + 40667.33369922854, + 39875.63960208979, + 40808.3165950709 + ], + [ + 40555.39904133374, + 40718.209253956, + 40934.940110677926, + 40908.485605861955, + 40853.60377713414 + ], + [ + 39276.96271051711, + 40618.57635842393, + 40772.080025229414, + 40230.32167932655, + 40933.15804032801 + ], + [ + 41207.32032574715, + 41165.850195266576, + 40675.42629983596, + 40556.700773688746, + 41091.8078583088 + ], + [ + 39919.82883357655, + 40591.35818943041, + 40978.874306332094, + 40896.45457092153, + 40741.19627849657 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testDtpSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "6000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 24098.037020718442, + "scoreError" : 118.92621134496876, + "scoreConfidence" : [ + 23979.110809373473, + 24216.963232063412 + ], + "scorePercentiles" : { + "0.0" : 23768.645427787593, + "50.0" : 24162.502073138323, + "90.0" : 24260.203643349883, + "95.0" : 24284.61911787857, + "99.0" : 24289.265832308476, + "99.9" : 24289.265832308476, + "99.99" : 24289.265832308476, + "99.999" : 24289.265832308476, + "99.9999" : 24289.265832308476, + "100.0" : 24289.265832308476 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 23982.931542750703, + 23964.214090032005, + 24046.02936605224, + 23862.261403498338, + 24225.915240963932 + ], + [ + 24251.15488277728, + 24273.77678420879, + 24011.0983726943, + 23979.923026919078, + 24238.814307597437 + ], + [ + 23768.645427787593, + 23908.81157813695, + 24162.502073138323, + 24241.980150274732, + 23780.724249675368 + ], + [ + 24077.68490480317, + 24197.53646088712, + 24198.291479172258, + 24037.338425911614, + 24239.094669814083 + ], + [ + 24289.265832308476, + 24240.561271730046, + 24242.273855321302, + 24190.53056999225, + 24039.565551513704 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testDtpSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "8000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 16477.238900139142, + "scoreError" : 228.68439546131336, + "scoreConfidence" : [ + 16248.554504677828, + 16705.923295600456 + ], + "scorePercentiles" : { + "0.0" : 15944.430607470855, + "50.0" : 16623.543545732417, + "90.0" : 16800.747617198922, + "95.0" : 16817.511764616032, + "99.0" : 16823.200549239868, + "99.9" : 16823.200549239868, + "99.99" : 16823.200549239868, + "99.999" : 16823.200549239868, + "99.9999" : 16823.200549239868, + "100.0" : 16823.200549239868 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 15944.430607470855, + 16365.390325495637, + 15995.946673493052, + 16125.000291194025, + 16085.662268303851 + ], + [ + 16237.842213643718, + 16159.301446084488, + 16027.209336392842, + 16137.655546608883, + 16201.613200427111 + ], + [ + 16726.25151397067, + 16697.713026471527, + 16692.67424902825, + 16753.865768471336, + 16753.585262747412 + ], + [ + 16732.229353251434, + 16623.543545732417, + 16669.4156825611, + 16823.200549239868, + 16654.425769884347 + ], + [ + 16608.23811558137, + 16804.237933827088, + 16798.420739446814, + 16616.325815098866, + 16696.79326905147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testStandardSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "100", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 2024530.591058425, + "scoreError" : 24116.539601117427, + "scoreConfidence" : [ + 2000414.0514573075, + 2048647.1306595423 + ], + "scorePercentiles" : { + "0.0" : 1982516.6755444333, + "50.0" : 2019873.2512882825, + "90.0" : 2073343.650756332, + "95.0" : 2102288.4293866465, + "99.0" : 2107612.321198558, + "99.9" : 2107612.321198558, + "99.99" : 2107612.321198558, + "99.999" : 2107612.321198558, + "99.9999" : 2107612.321198558, + "100.0" : 2107612.321198558 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1992469.2641976194, + 1994759.5835302651, + 2011924.9783304564, + 2022600.7949903489, + 2034566.4773653138 + ], + [ + 2044482.091184728, + 1999814.7261992493, + 2036399.8525117594, + 2043947.1034784091, + 2042859.7714767663 + ], + [ + 2019873.2512882825, + 1995127.8284573886, + 2007616.9358470612, + 1998245.334024759, + 2022065.7694299472 + ], + [ + 1985354.5861612302, + 2003272.5274571844, + 2001251.028938096, + 1982516.6755444333, + 2006358.7174283578 + ], + [ + 2051892.4148911396, + 2056057.9862157607, + 2062328.741154651, + 2107612.321198558, + 2089866.0151588537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testStandardSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "2000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 102962.75035792969, + "scoreError" : 601.2503379251723, + "scoreConfidence" : [ + 102361.50002000452, + 103564.00069585486 + ], + "scorePercentiles" : { + "0.0" : 100589.79715474774, + "50.0" : 103272.58799110886, + "90.0" : 103760.72904311687, + "95.0" : 104026.68645549331, + "99.0" : 104116.32078278087, + "99.9" : 104116.32078278087, + "99.99" : 104116.32078278087, + "99.999" : 104116.32078278087, + "99.9999" : 104116.32078278087, + "100.0" : 104116.32078278087 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103565.00420332824, + 100589.79715474774, + 103513.78331164381, + 102591.49593303356, + 102792.21443713512 + ], + [ + 102325.23866182845, + 103036.85359553211, + 103107.43472473524, + 102297.0846683748, + 103326.91044250756 + ], + [ + 103722.85527731321, + 103404.01001235774, + 102850.59778174109, + 103274.68179542778, + 103817.53969182234 + ], + [ + 103539.36486741598, + 102399.53443744319, + 103444.26386253507, + 102359.31889384275, + 103479.16262033381 + ], + [ + 103673.97377694117, + 103272.58799110886, + 104116.32078278087, + 101506.74445528393, + 102061.98556902874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testStandardSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "4000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 41844.18636584237, + "scoreError" : 246.58991369253627, + "scoreConfidence" : [ + 41597.59645214983, + 42090.776279534904 + ], + "scorePercentiles" : { + "0.0" : 40986.73341838288, + "50.0" : 41882.63870064468, + "90.0" : 42199.94798983034, + "95.0" : 42286.64508487596, + "99.0" : 42309.044955223, + "99.9" : 42309.044955223, + "99.99" : 42309.044955223, + "99.999" : 42309.044955223, + "99.9999" : 42309.044955223, + "100.0" : 42309.044955223 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41882.63870064468, + 41744.61375638908, + 41819.820948860266, + 41617.721087440965, + 42309.044955223 + ], + [ + 42045.37019115379, + 41841.68396943274, + 41631.01730800342, + 41704.7497841965, + 42073.91990425318 + ], + [ + 41967.60012674226, + 41631.146893697514, + 42080.06203574377, + 42091.88002827002, + 41541.123482294526 + ], + [ + 41691.11989967058, + 42133.35812889493, + 42171.70694198779, + 41330.2986335887, + 40986.73341838288 + ], + [ + 41958.7257579559, + 42234.37872073287, + 41287.63688403775, + 42176.99416922865, + 42151.31341923346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testStandardSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "6000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 24421.991900186054, + "scoreError" : 353.59787358267147, + "scoreConfidence" : [ + 23768.394026603382, + 24475.589773768726 + ], + "scorePercentiles" : { + "0.0" : 23071.77658872453, + "50.0" : 24234.665571961857, + "90.0" : 24638.749496464687, + "95.0" : 24658.36278645418, + "99.0" : 24666.34820228978, + "99.9" : 24666.34820228978, + "99.99" : 24666.34820228978, + "99.999" : 24666.34820228978, + "99.9999" : 24666.34820228978, + "100.0" : 24666.34820228978 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 24629.174542583765, + 24234.665571961857, + 24639.730149504445, + 24666.34820228978, + 24013.148353807024 + ], + [ + 24218.87198660302, + 24563.91735119501, + 24553.246124015022, + 24372.07927855178, + 24538.369977505812 + ], + [ + 24370.033612120453, + 24622.083011965075, + 24240.48544207802, + 24545.860456254624, + 24638.095727771517 + ], + [ + 23754.67404893567, + 23739.607210700233, + 23661.39556451895, + 23639.18446206984, + 23771.06266492151 + ], + [ + 23498.967402402424, + 23071.77658872453, + 23338.742807054266, + 23773.96102058579, + 23954.31594653106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.36", + "benchmark" : "org.dromara.dynamictp.benchmark.ExecutorBenchmark.testStandardSubmit", + "mode" : "thrpt", + "threads" : 1, + "forks" : 5, + "jvm" : "D:\\java8\\java-se-8u41-ri\\jre\\bin\\java.exe", + "jvmArgs" : [ + "-Dvisualvm.id=2278179260565700", + "-javaagent:D:\\IntelliJ IDEA 2024.1.4\\lib\\idea_rt.jar=1579:D:\\IntelliJ IDEA 2024.1.4\\bin", + "-Dfile.encoding=UTF-8" + ], + "jdkVersion" : "1.8.0_41", + "vmName" : "OpenJDK Client VM", + "vmVersion" : "25.40-b25", + "warmupIterations" : 5, + "warmupTime" : "10 s", + "warmupBatchSize" : 1, + "measurementIterations" : 5, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "max" : "8000", + "taskType" : "MEDIUM" + }, + "primaryMetric" : { + "score" : 16521.767304907597, + "scoreError" : 88.15687309478982, + "scoreConfidence" : [ + 16433.610431812805, + 16609.924178002388 + ], + "scorePercentiles" : { + "0.0" : 16264.927174329181, + "50.0" : 16561.192321076844, + "90.0" : 16636.84276023751, + "95.0" : 16651.2448011043, + "99.0" : 16653.865846519366, + "99.9" : 16653.865846519366, + "99.99" : 16653.865846519366, + "99.999" : 16653.865846519366, + "99.9999" : 16653.865846519366, + "100.0" : 16653.865846519366 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 16381.942803082016, + 16631.31858141641, + 16482.953413865394, + 16620.31962609732, + 16303.565192651096 + ], + [ + 16557.98284385913, + 16602.776951628442, + 16605.998364679246, + 16617.067982421475, + 16466.922440418817 + ], + [ + 16355.04925035902, + 16645.129028469153, + 16604.224709508504, + 16590.82646841938, + 16386.74464754489 + ], + [ + 16448.99691399792, + 16653.865846519366, + 16491.486174841586, + 16627.643715889506, + 16371.267809008117 + ], + [ + 16264.927174329181, + 16561.192321076844, + 16547.20889601228, + 16608.180035706322, + 16616.59143088852 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 0d4ec3595..6749f6a47 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -62,7 +62,7 @@ 0.6.0 4.2.20 - 1.35 + 1.36 2.0.2 1.15.5 @@ -263,14 +263,12 @@ org.openjdk.jmh jmh-core ${jmh.version} - test org.openjdk.jmh jmh-generator-annprocess ${jmh.version} - test diff --git a/pom.xml b/pom.xml index fac91a9fb..d11eb5728 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ test dependencies spring + benchmark