本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
JVM为了让Java代码更好更快的运行,做出了大量的改进和优化。虽然各种外部环境的变化让我们不再需要关注每一行代码的性能,但是也难免有需要自己衡量代码性能的时候。
OpenJDK提供了JMH工具可以科学量化性能。
对于一个已有的项目(比如Gradle项目),要使用JMH,首先要引入依赖
compile group: 'org.openjdk.jmh', name: 'jmh-core', version: '1.20' compile group: 'org.openjdk.jmh', name: 'jmh-generator-annprocess', version: '1.20'
在IDE中enable annprocess,然后新建类
import org.openjdk.jmh.annotations.Benchmark; 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; public class App { @Benchmark public void method() { } public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() .include(App.class.getSimpleName()) .forks(1) .build(); new Runner(opt).run(); } }
直接运行main方法就可以了
JMH还支持Setup等预处理,还有分线程的State,具体的配置可以参考文档。
JMH另外一个比较重要的就是输出文件的分析,在配置中指定output就可以保存为json格式。然后借助一些分析工具,比如http://jmh.morethan.io/
Options opt = new OptionsBuilder() .include(App.class.getSimpleName()) .forks(1) .resultFormat(ResultFormatType.JSON) .result("file") .build();
图表如下:
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯