美文网首页java小技术
使用JMH进行性能测试

使用JMH进行性能测试

作者: go4it | 来源:发表于2015-05-22 16:45 被阅读3963次

一、背景

在benchmark的世界里头,分为广义的benchmark和狭义的benchmark(即microbenchmark,中文人称微基准测试)。
广义的benchmark涵盖很多方面,对于一个分层的web系统来说,可能包括操作系统的、数据库的、网络交互的、应用系统里头的benchmark;microbenchmark是针对一个相对的小的方面来说的,比如针对java系统的microbenchmark,针对数据库负载能力的microbenchmark,针对web服务器的microbenchmark等等。
而在java里头的microbenchmark又牵涉到许多java编译优化方面的benchmark处理,比如针对普通java应用系统的性能测试,需要预热阶段,是的JIT的优化能达到效果,系统进入稳定状态,尽量控制变量,好得出实验结果。当然,如果本身就是要测试jvm编译优化的,那就可以省去这步了。
因而,如何知道系统什么时候进入稳定状态,JIT的优化不会对实现结果造成不必要的干扰,就得程序去处理预热阶段,可能比较复杂,不过还好,有人搞了一个JMH的code tool,是的在java里头进行microbenchmark变得异常方便。

二、工具

1、jmh

JMH (Java Micro-benchmarks Harness or Juicy Munchy Hummus, hard to say as they don't tell you on the site) is the latest and as it comes out of the workshop of the very people who work hard to make the OpenJDK JVM fly it promises to deliver more accuracy and better tooling then most.

2、使用方式

(1)基于maven的配置

<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>0.4.2</version>
</dependency>

(2)HELLO WORLD

public class JMHSample_01_HelloWorld {
@GenerateMicroBenchmark
public void wellHelloThere() {
    // this method was intentionally left blank.
 } 
}

(3)命令行运行

mvn clean install
java -jar target/benchmarks.jar JMHSample_01`

(4)main方法里头运行

public static void main(String[] args) throws RunnerException {
    Options opt = new OptionsBuilder()
            .include(JMHSample_01_HelloWorld.class.getSimpleName())
            .forks(1)
            .build();
    new Runner(opt).run();
}

三、参数说明

1、Mode.Throughput

在有时限的迭代里头,该方法能被调用多少次

2、Mode.AverageTime

方法平均执行时间

3、Mode.SampleTime

对方法执行时间进行采样计算

4、Mode.SingleShotTime

方法的单次调用时间/一次批处理的总调用时间

注意点:
从@State对象读取测试输入并返回计算的结果,方便JMH对冗余代码进行消除;
如果是测试方法的性能,则避免通过在方法内循环(重复执行方法内原来代码),这样造成方法方法调用次数的减少,结果不准确,应该把循环调用放在方法外头。

examples的话,参考官网:
http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/

相关文章

  • 使用JMH进行性能测试

    一、背景 在benchmark的世界里头,分为广义的benchmark和狭义的benchmark(即microbe...

  • 在java中使用JMH(Java Microbenchmark

    在java中使用JMH(Java Microbenchmark Harness)做性能测试 JMH的全称是Java...

  • 使用JMH工具进行性能测试

    介绍 JMH,即Java Microbenchmark Harness,从名字就可以看出,这是专门用于进行代码的微...

  • 使用JMH框架进行性能基准测试

    介绍 我们在选择不同框架、算法时,不同场景下的性能是很重要考虑因素。JMH这个Java的微基准测试框架提供简单的方...

  • 使用JMH进行基准测试

    性能测试这个话题非常庞大,我们可以从网络聊到操作系统,再从操作系统聊到内核,再从内核聊到你怀疑人生有木有。 先拍几...

  • JMH使用说明

    JMH使用说明 概述 JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的...

  • java性能测试jmh

    1 简介 jmh主要用于开发人员进行性能压测,代替手动编写相关程序。 官网: http://openjdk.jav...

  • JMH 性能测试框架

     JMH,即Java Microbenchmark Harness,这是专门用于进行代码的微基准测试的一套工具AP...

  • JMH性能测试(转)

    基于原贴,用Markdown语法美化了一下。原贴:https://www.cnblogs.com/bestzhan...

  • RPC Benchmark Round 4

    测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...

网友评论

    本文标题:使用JMH进行性能测试

    本文链接:https://www.haomeiwen.com/subject/thalqttx.html