diff --git a/hutool-jmh/README.md b/hutool-jmh/README.md
new file mode 100644
index 000000000..74fdd225d
--- /dev/null
+++ b/hutool-jmh/README.md
@@ -0,0 +1,80 @@
+
+
+
+
+ 🍬Make Java Sweet Again.
+
+
+ 👉 https://hutool.cn/ 👈
+
+
+## 📚Hutool-jmh 模块介绍
+
+`Hutool-jmh`提供性能对比测试
+
+## 安装
+
+### 引入依赖
+
+```xml
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+ test
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+ test
+
+```
+
+### 安装插件
+
+IDEA安装`JMH Java Microbenchmark Harness`插件,主页见:https://plugins.jetbrains.com/plugin/7529-jmh-java-microbenchmark-harness
+
+## 注解说明
+
+### @BenchmarkMode
+使用哪种模式测试,JMH 提供了4种不同的模式:
+- `Mode.Throughput` 吞吐量, ops/time。单位时间内执行操作的平均次数,例如“1秒内可以执行多少次调用”
+- `Mode.AverageTime` 平均时间, time/op。 执行每次操作所需的平均时间,例如“每次调用平均耗时xxx毫秒”
+- `Mode.SampleTime` 采样时间, time/op。 同 AverageTime。区别在于会统计取样分布,例如“99%的调用在xxx毫秒以内,99.99%的调用在xxx毫秒以内”
+- `Mode.SingleShotTime` 单次时间, time。 同 AverageTime。区别在于只执行一次操作。这种模式的结果存在较大随机性,往往同时把 warmup 次数设为0,用于测试冷启动时的性能。
+
+### @Warmup和 @Measurement
+@Warmup 和@Measurement分别用于配置预热迭代和测试迭代。其中:
+- iterations 用于指定迭代次数。
+- time 和 timeUnit 用于每个迭代的时间。
+- batchSize 表示执行多少次 Benchmark为一个invocation。
+
+### @State
+类注解,JMH 测试类必须使用 @State 注解,它定义了一个类实例的生命周期,有三种类型:
+- `Scope.Thread`:每个线程一个实例,适合不共享数据的测试。
+- `Scope.Benchmark`:所有测试线程共享一个实例,用于测试有状态实例在多线程共享下的性能;
+- `Scope.Group`:每个线程组共享一个实例;
+
+### @Fork
+进行 fork 的次数。如果 fork 数是2的话,则 JMH 会 fork 出两个进程来进行测试。
+
+### @Setup 和 @TearDown
+方法注解。
+- `@Setup`会在执行 benchmark 之前被执行,主要用于初始化。
+- `@TearDown`会在执行 benchmark 之后被执行,主要用于资源的回收等。
+
+### @Benchmark
+方法注解,表示该方法是需要进行 benchmark 的对象。
+
+### @OutputTimeUnit
+输出的时间单位。
+
+### @Param
+成员注解,可以用来指定某项参数的多种情况。特别适合用来测试一个函数在不同的参数输入的情况下的性能。@Param 注解接收一个String数组,在 @Setup 方法执行前转化为为对应的数据类型。
+多个 @Param 注解的成员之间是乘积关系,譬如有两个用 @Param 注解的字段,第一个有5个值,第二个字段有2个值,那么每个测试方法会跑5*2=10次。
+
+## 参考:
+
+[如何在 Java 中使用 JMH 进行基准测试](https://segmentfault.com/a/1190000039902797)
\ No newline at end of file
diff --git a/hutool-jmh/pom.xml b/hutool-jmh/pom.xml
new file mode 100644
index 000000000..2106735e5
--- /dev/null
+++ b/hutool-jmh/pom.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ 4.0.0
+
+ jar
+
+
+ org.dromara.hutool
+ hutool-parent
+ 6.0.0-M17
+
+
+ hutool-jmh
+ ${project.artifactId}
+ Hutool 性能测试
+
+
+ org.dromara.hutool.jmh
+
+ true
+ 1.37
+
+ 2.17.2
+ 2.11.0
+ 2.0.41
+ 1.15.1
+
+
+
+
+ org.dromara.hutool
+ hutool-bom
+ ${project.parent.version}
+ pom
+ test
+
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+ test
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+ test
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+ true
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ ${jackson.version}
+ test
+
+
+ com.google.code.gson
+ gson
+ ${gson.version}
+ true
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ ${fastjson2.version}
+ true
+
+
+ com.squareup.moshi
+ moshi
+ 1.15.1
+ true
+
+
+
diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/io/buffer/CharBufferJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/core/CharBufferJmh.java
similarity index 91%
rename from hutool-core/src/test/java/org/dromara/hutool/core/io/buffer/CharBufferJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/core/CharBufferJmh.java
index 7dcda187a..1fedbd316 100644
--- a/hutool-core/src/test/java/org/dromara/hutool/core/io/buffer/CharBufferJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/core/CharBufferJmh.java
@@ -1,5 +1,6 @@
-package org.dromara.hutool.core.io.buffer;
+package org.dromara.hutool.jmh.core;
+import org.dromara.hutool.core.io.buffer.FastCharBuffer;
import org.openjdk.jmh.annotations.*;
import java.util.concurrent.TimeUnit;
diff --git a/hutool-jmh/src/test/java/org/dromara/hutool/jmh/core/package-info.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/core/package-info.java
new file mode 100644
index 000000000..cd70ae541
--- /dev/null
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/core/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * 核心包性能测试
+ */
+package org.dromara.hutool.jmh.core;
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/BeanToJsonStrJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/BeanToJsonStrJmh.java
similarity index 98%
rename from hutool-json/src/test/java/org/dromara/hutool/json/jmh/BeanToJsonStrJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/BeanToJsonStrJmh.java
index 2234371c5..9b1ef0fe0 100644
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/BeanToJsonStrJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/BeanToJsonStrJmh.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.dromara.hutool.json.jmh;
+package org.dromara.hutool.jmh.json;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/FromJsonStringStrJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/FromJsonStringStrJmh.java
similarity index 98%
rename from hutool-json/src/test/java/org/dromara/hutool/json/jmh/FromJsonStringStrJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/FromJsonStringStrJmh.java
index 563980099..e78e331bb 100644
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/FromJsonStringStrJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/FromJsonStringStrJmh.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.dromara.hutool.json.jmh;
+package org.dromara.hutool.jmh.json;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.gson.JsonElement;
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonAddJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonAddJmh.java
similarity index 97%
rename from hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonAddJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonAddJmh.java
index d6c5854e6..2fb74f146 100644
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonAddJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonAddJmh.java
@@ -1,4 +1,4 @@
-package org.dromara.hutool.json.jmh;
+package org.dromara.hutool.jmh.json;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonPutJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonPutJmh.java
similarity index 97%
rename from hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonPutJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonPutJmh.java
index e2b2cb91e..1f95dbd7c 100644
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonPutJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonPutJmh.java
@@ -1,4 +1,4 @@
-package org.dromara.hutool.json.jmh;
+package org.dromara.hutool.jmh.json;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonToStringJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonToStringJmh.java
similarity index 97%
rename from hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonToStringJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonToStringJmh.java
index 42d034992..430ff9edd 100644
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/JsonToStringJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/JsonToStringJmh.java
@@ -1,4 +1,4 @@
-package org.dromara.hutool.json.jmh;
+package org.dromara.hutool.jmh.json;
import com.alibaba.fastjson2.JSON;
import com.google.gson.JsonElement;
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/ParseTreeJmh.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/ParseTreeJmh.java
similarity index 97%
rename from hutool-json/src/test/java/org/dromara/hutool/json/jmh/ParseTreeJmh.java
rename to hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/ParseTreeJmh.java
index 36b9aa416..ea39f009b 100644
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/ParseTreeJmh.java
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/ParseTreeJmh.java
@@ -1,4 +1,4 @@
-package org.dromara.hutool.json.jmh;
+package org.dromara.hutool.jmh.json;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/package-info.java b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/package-info.java
new file mode 100644
index 000000000..119f7a300
--- /dev/null
+++ b/hutool-jmh/src/test/java/org/dromara/hutool/jmh/json/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * JSON性能测试
+ */
+package org.dromara.hutool.jmh.json;
diff --git a/hutool-json/pom.xml b/hutool-json/pom.xml
index 8326fd31e..7442c27bc 100755
--- a/hutool-json/pom.xml
+++ b/hutool-json/pom.xml
@@ -35,7 +35,6 @@
org.dromara.hutool.json
- 1.78.1
0.12.6
2.17.2
2.11.0
diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/JSONUtil.java b/hutool-json/src/main/java/org/dromara/hutool/json/JSONUtil.java
index 2376c7995..4097147a4 100644
--- a/hutool-json/src/main/java/org/dromara/hutool/json/JSONUtil.java
+++ b/hutool-json/src/main/java/org/dromara/hutool/json/JSONUtil.java
@@ -434,7 +434,7 @@ public class JSONUtil {
* 转换对象为JSON,如果用户不配置JSONConfig,则JSON的有序与否与传入对象有关。
* 支持的对象:
*
- * - boolean、Number、String: 转换为{@link JSONPrimitive}/li>
+ *
- boolean、Number、String: 转换为{@link JSONPrimitive}
* - Array、Iterable、Iterator:转换为{@link JSONArray}
* - Bean对象:转为{@link JSONObject}
*
diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/package-info.java b/hutool-json/src/test/java/org/dromara/hutool/json/jmh/package-info.java
deleted file mode 100644
index 1664fe97a..000000000
--- a/hutool-json/src/test/java/org/dromara/hutool/json/jmh/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * 测试包,用于JMH基准测试
- */
-package org.dromara.hutool.json.jmh;
diff --git a/pom.xml b/pom.xml
index e4a9b140c..5db353a7b 100755
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
hutool-poi
hutool-socket
hutool-swing
+ hutool-jmh
@@ -58,7 +59,7 @@
5.10.3
1.18.34
1.9.25
- 1.37
+ 1.78.1
@@ -82,19 +83,6 @@
${lombok.version}
test
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh.version}
- test
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh.version}
- test
-