java 基准测试_Java基准测试 — JMH

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

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方法就可以了

fdebd3a8f9f71da9f8e625d6a5cfcebd.png

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();

图表如下:

c1b63888dfaf2140a5e8de4a83b61136.png

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值