From e9019278a4bc465e34d1c1ec8514529b411f5313 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sun, 19 Jan 2025 13:08:24 +0800 Subject: [PATCH] feat: JMHExample07 --- .../java/cn/bunny/{ => jmh}/JMHExample01.java | 2 +- .../java/cn/bunny/{ => jmh}/JMHExample02.java | 2 +- .../java/cn/bunny/{ => jmh}/JMHExample03.java | 2 +- .../java/cn/bunny/{ => jmh}/JMHExample04.java | 2 +- .../java/cn/bunny/{ => jmh}/JMHExample05.java | 2 +- .../java/cn/bunny/{ => jmh}/JMHExample06.java | 2 +- .../main/java/cn/bunny/jmh/JMHExample07.java | 63 +++++++++++++++++++ 7 files changed, 69 insertions(+), 6 deletions(-) rename multithreading1/src/main/java/cn/bunny/{ => jmh}/JMHExample01.java (98%) rename multithreading1/src/main/java/cn/bunny/{ => jmh}/JMHExample02.java (98%) rename multithreading1/src/main/java/cn/bunny/{ => jmh}/JMHExample03.java (97%) rename multithreading1/src/main/java/cn/bunny/{ => jmh}/JMHExample04.java (97%) rename multithreading1/src/main/java/cn/bunny/{ => jmh}/JMHExample05.java (98%) rename multithreading1/src/main/java/cn/bunny/{ => jmh}/JMHExample06.java (98%) create mode 100644 multithreading1/src/main/java/cn/bunny/jmh/JMHExample07.java diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample01.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample01.java similarity index 98% rename from multithreading1/src/main/java/cn/bunny/JMHExample01.java rename to multithreading1/src/main/java/cn/bunny/jmh/JMHExample01.java index dfe26b1..59a3ad5 100644 --- a/multithreading1/src/main/java/cn/bunny/JMHExample01.java +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample01.java @@ -1,4 +1,4 @@ -package cn.bunny; +package cn.bunny.jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample02.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample02.java similarity index 98% rename from multithreading1/src/main/java/cn/bunny/JMHExample02.java rename to multithreading1/src/main/java/cn/bunny/jmh/JMHExample02.java index 58813ad..85fec97 100644 --- a/multithreading1/src/main/java/cn/bunny/JMHExample02.java +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample02.java @@ -1,4 +1,4 @@ -package cn.bunny; +package cn.bunny.jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample03.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample03.java similarity index 97% rename from multithreading1/src/main/java/cn/bunny/JMHExample03.java rename to multithreading1/src/main/java/cn/bunny/jmh/JMHExample03.java index 501668f..6a15e1d 100644 --- a/multithreading1/src/main/java/cn/bunny/JMHExample03.java +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample03.java @@ -1,4 +1,4 @@ -package cn.bunny; +package cn.bunny.jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample04.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample04.java similarity index 97% rename from multithreading1/src/main/java/cn/bunny/JMHExample04.java rename to multithreading1/src/main/java/cn/bunny/jmh/JMHExample04.java index 7206211..9fa253b 100644 --- a/multithreading1/src/main/java/cn/bunny/JMHExample04.java +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample04.java @@ -1,4 +1,4 @@ -package cn.bunny; +package cn.bunny.jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample05.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample05.java similarity index 98% rename from multithreading1/src/main/java/cn/bunny/JMHExample05.java rename to multithreading1/src/main/java/cn/bunny/jmh/JMHExample05.java index 18d9ad2..9e59a2b 100644 --- a/multithreading1/src/main/java/cn/bunny/JMHExample05.java +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample05.java @@ -1,4 +1,4 @@ -package cn.bunny; +package cn.bunny.jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample06.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample06.java similarity index 98% rename from multithreading1/src/main/java/cn/bunny/JMHExample06.java rename to multithreading1/src/main/java/cn/bunny/jmh/JMHExample06.java index 6e98e87..7d355d4 100644 --- a/multithreading1/src/main/java/cn/bunny/JMHExample06.java +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample06.java @@ -1,4 +1,4 @@ -package cn.bunny; +package cn.bunny.jmh; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/multithreading1/src/main/java/cn/bunny/jmh/JMHExample07.java b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample07.java new file mode 100644 index 0000000..faaf046 --- /dev/null +++ b/multithreading1/src/main/java/cn/bunny/jmh/JMHExample07.java @@ -0,0 +1,63 @@ +package cn.bunny.jmh; + +import org.openjdk.jmh.annotations.*; +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; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.AverageTime) +@Fork(1) +@Warmup(iterations = 5) +@Measurement(iterations = 5) +@OutputTimeUnit(TimeUnit.MICROSECONDS) +@Threads(5) +@State(Scope.Benchmark) +public class JMHExample07 { + + // 为type提供了4中可配置的参数值 + @Param({"1", "2", "3", "4"}) + private int type; + + private Map map; + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(JMHExample07.class.getSimpleName()) + .build(); + new Runner(options).run(); + } + + @Setup + public void setup() { + switch (type) { + case 1: + this.map = new ConcurrentHashMap<>(); + break; + case 2: + this.map = new ConcurrentSkipListMap<>(); + break; + case 3: + this.map = new Hashtable<>(); + break; + case 4: + this.map = Collections.synchronizedMap(new HashMap<>()); + break; + default: + throw new IllegalArgumentException("Illegal map type"); + } + } + + @Benchmark + public void test() { + this.map.put(System.nanoTime(), System.nanoTime()); + } +}