当前位置:网站首页 > 技术博客 > 正文

java测试类代码



1、什么是JMH

JMH,即 Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件。何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级。其由 Oracle/openjdk 内部开发JIT编译器的大佬们所开发,作为java的方法级性能测试工具可以说是根正苗红了。(官方地址:http://hg.openjdk.java.net/code-tools/jmh/ )

2、JMH适用的典型场景

  • a、优化热点方法,准确的知道某个方法的执行耗时,以及不同入参与最终实际耗时的关系,从而针对性的进行优化;
  • b、寻找最佳方案,验证接口方法不同实现方式的实际吞吐量,从而确定最佳实现方式 。如:选择json转换工具时选fastjson还是gson、字符串连接使用StringBuilder方式还是直接相加;
  • c、分析性能损耗,在原接口方法业务逻辑中添加新的业务代码时,对整个业务方法的性能影响。如:在原业务逻辑中,添加一个插入操作日志的操作,可以分析新加操作对整个业务方法的性能影响。
  • d、分析百分比内的耗时,即测试方法多次调用时百分比区间内的耗时,如:测试调用某个方法,50%以内的调用耗时是8.2ms/op,90%以内是9.3ms/op,99.99%以内是10.2ms/op,等等。(模式为Mode.SampleTime)

3、JMH基本概念

  • a、Mode :表示JMH测试中的模式,默认有5种,分别是Throughput(吞吐量)、AverageTime(平均耗时)、SampleTime(随机采样)、SingleShotTime(单次执行)、All(以上4种都来一次);
  • b、Fork:表示JMH将用来测试的进程数;
  • c、Warmup : 表示预热,在HotSpot中,JVM的JIT编译器会对热点代码进行编译优化, 因此为了最接近真实的情况,需要先预热测试代码,使JIT编译器完成可能需要的优化,从而令JMH最终测试结果更加准确;
  • d、Iteration :表示JMH中的最小测试迭代单位,即测试次数,一般默认值是每次1s;
  • e、Benchmark:用于标注JMH将进行测试的方法。(类似Junit中的@Test注解)

1、添加依赖

 

2、示例代码

 

代码拷贝就可以直接运行,其他更多测试请自行修改试验。

参考:https://www.uoften.com/article/215076.html


(END)

版权声明


相关文章:

  • 01背包 完全背包 多重背包2024-12-04 16:30:05
  • java线程池的原理和实现2024-12-04 16:30:05
  • 数据库测试的具体测试方法2024-12-04 16:30:05
  • linux桌面版为什么没人用2024-12-04 16:30:05
  • 舅舅家的电脑2024-12-04 16:30:05
  • python 安装win32gui2024-12-04 16:30:05
  • oracle游标的概念2024-12-04 16:30:05
  • 如何打开全局代理2024-12-04 16:30:05
  • sqlmap注入漏洞2024-12-04 16:30:05
  • 用idea创建java项目2024-12-04 16:30:05