<!--JMH-->
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.21</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.21</version>
<scope>provided</scope>
</dependency>
</dependencies>
@BenchmarkMode(Mode.AverageTime) // 测试完成时间
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS) // 预热 3 轮,每次 1s
@Measurement(iterations =4, time = 3, timeUnit = TimeUnit.SECONDS) // 测试 4 轮,每次 3s
@Fork(3) // forks(3) 指的是做3轮测试,因为⼀次测试⽆法有效的代表结果,所以通过3轮测试较为全⾯的测试,⽽每⼀轮都是先预热,再正式计量
@State(Scope.Benchmark)
@Threads(10) // 开启 10 个并发线程
public class JmhHelloWorld {
public static void main(String[] args) throws RunnerException {
Options options=new OptionsBuilder().warmupIterations(2).measurementBatchSize(2).forks(1).build();
new Runner(options).run();
}
@Benchmark
public void testStringAdd(){
String s="";
for (int i = 0; i <100 ; i++) {
s+=i;
}
}
@Benchmark
public void testStringBuildAdd(){
StringBuilder s=new StringBuilder();
for (int i = 0; i <100 ; i++) {
s.append(i);
}
s.toString();
}
}
代码异常
# Run progress: 0.00% complete, ETA 00:00:28
# Fork: 1 of 1
ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
<forked VM failed with exit code 2>
<stdout last='20 lines'>
</stdout>
<stderr last='20 lines'>
ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
</stderr>
main方法不能使用debug模式启动