其他分享
首页 > 其他分享> > 基准测试JMH

基准测试JMH

作者:互联网

生成一个新的JMH工程的maven命令:

 mvn archetype:generate 
 -DinteractiveMode=false 
 -DarchetypeGroupId=org.openjdk.jmh 
 -DarchetypeArtifactId=jmh-java-benchmark-archetype 
 -DgroupId=com.enjoy.jmh
 -DartifactId=wl 
 -Dversion=1.0.0-SNAPSHOT

在命令后面加一个 -X 就可以查看到详细日志,执行上面命令后,会创建一个Maven工程,但是默认生成的MyBenchmark.java类
在这里插入图片描述

生成的项JmhTest,导入idea中
在这里插入图片描述
还需要增加一个jar包

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

项目打包jar包
在这里插入图片描述
在这里插入图片描述
运行jar包:java -jar benchmarks.jar
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述
以上结果可以看出,这两个方法的执行时间基本上差不多,这是为什么呢,是因为锁消除呀(表情包)。
因为JIT(即时编译器)会对代码做了优化–锁消除,对于b方法来说,这把锁并没有什么鬼用,这对象o都逃离不了这个方法,如果有返回值的话就需要加锁,加不加锁都不影响是否有安全问题。一百个线程有一百个o对象。
在这里插入图片描述
synchronized还是有意义的,但也会很影响我们的性能。。。。

标签:加锁,java,基准,jar,JMH,jmh,测试,archetype
来源: https://blog.csdn.net/wlchina123/article/details/111190477