From 690d9c99e78b289bed965e8285c7250cbe3db920 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Sun, 19 Jan 2025 12:56:17 +0800 Subject: [PATCH] feat: JMHExample06 --- .../src/main/java/cn/bunny/JMHExample06.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 multithreading1/src/main/java/cn/bunny/JMHExample06.java diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample06.java b/multithreading1/src/main/java/cn/bunny/JMHExample06.java new file mode 100644 index 0000000..6e98e87 --- /dev/null +++ b/multithreading1/src/main/java/cn/bunny/JMHExample06.java @@ -0,0 +1,50 @@ +package cn.bunny; + +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.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.AverageTime) +@Fork(1) +@Warmup(iterations = 5) +@Measurement(iterations = 10) +@OutputTimeUnit(TimeUnit.MICROSECONDS) +@Threads(5) +@State(Scope.Benchmark) +public class JMHExample06 { + + private Map concurrentMap; + private Map synchronizedMap; + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(JMHExample06.class.getSimpleName()) + .build(); + + new Runner(options).run(); + } + + @Setup + public void setUp() { + concurrentMap = new ConcurrentHashMap<>(); + synchronizedMap = Collections.synchronizedMap(new HashMap<>()); + } + + @Benchmark + public void testConcurrencyMap() { + concurrentMap.put(System.nanoTime(), System.nanoTime()); + } + + @Benchmark + public void testSynchronizedMap() { + synchronizedMap.put(System.nanoTime(), System.nanoTime()); + } +}