生成视图的网站(在跑性能测试时指定生成json格式的结果,再上传到此网站可视化):http://deepoove.com/jmh-visual-chart/
<!-- JMH-->
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.25.2</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.25.2</version>
<scope>provided</scope>
</dependency>
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 3)
@Measurement(iterations = 10, time = 5, timeUnit = TimeUnit.SECONDS)
@Threads(8)
@Fork(2)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public class StringBuilderBenchmark {
@Benchmark
public void testStringAdd() {
String a = "";
for (int i = 0; i < 10; i++) {
a += i;
}
print(a);
}
@Benchmark
public void testStringBuilderAdd() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 10; i++) {
stringBuilder.append(i);
}
print(stringBuilder.toString());
}
private void print(String a) {
}
// 生成json格式的结果,默认是生成log格式的
public static void main(String []args) throws RunnerException {
org.openjdk.jmh.runner.options.Options options = new OptionsBuilder()
.include(StringBuilderBenchmark.class.getSimpleName())
.shouldDoGC(true)
.resultFormat(ResultFormatType.JSON)
.result("benchmark-result.json")
.addProfiler(StackProfiler.class)
.jvmArgsAppend("-Djmh.stack.period=1")
.warmupIterations(5)
.measurementIterations(5)
.forks(1)
.build();
new Runner(options).run();
}
}
原文:https://www.cnblogs.com/lin-/p/13794051.html