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

jm系列画



JMH(Java Microbenchmark Harness)是一个Micro Benchmark Framework(微基准测试框架),一个java工具,可以简单的理解成method层面的benchmark测试,可以精确到微秒级。不仅可以测试java代码还可以测试其他jvm上的程序

简单地说,基准测试是针对系统设计的一种压力测试。真正的性能都不能通过估计的方式来进行优化的,必须要有专业的测试工具,全面、仔细、专业的展示被测试代码的性能。

 
 

其中就是要被测试性能的方法,main调用JMHapi来进行性能测试。

2.2.1 @BenchmarkMode(Mode.AverageTime)

其中声明要测试的类型,该注解可以作用在方法上、类上支持如下(定义于: )

  1. Throughput吞吐量
  2. Average Time 平均时间
  3. Sample Time 抽样统计时间(包括最大最小等)
  4. Single Shot Time 单发时间(常用于冷启动)
  5. All 所有的指标

2.2.2 @OutputTimeUnit(TimeUnit.MICROSECONDS)

以指定单位打印BenchMark测试结果。支持单位如下

  1. NANOSECONDS 纳秒
  2. MICROSECONDS 微秒
  3. MILLISECONDS 毫秒
  4. SECONDS 几秒钟
  5. MINUTES 分钟
  6. HOURS 时间
  7. DAYS 天数

2.2.3 @State(Scope.Thread)

用于关联一些BenchMark测试需要的变量,如下代码举例:

 

向JHM框架表名这是一个state类。被@State注解注上的类有如下约束:

  1. 类必须是public
  2. 如果是静态的话还必须是static的
  3. 类必须有一个无参构造函数

2.2.4 @Benchmark

类似与在Junit框架里的作用。

2.2.5 @SetUp

方法级注解,这个注解的作用就是我们需要在测试之前进行一些准备工作,比如对一些数据的初始化之类的。类似与Junit的

2.2.6 @TearDown

方法级注解,这个注解的作用就是我们需要在测试之后进行一些结束工作,比如关闭线程池,数据库连接等的,主要用于资源的回收等。类似junit的

  1. 一般不要在循环里使用JHM,必须非预期的JVM循环优化
  2. 避免常数优化,参考这里
  3. 没有代码调用的代码块会被JVM忽略,甚至都不执行,例如:
 
  1. JMH idea 插件
  2. JMH代码示例大全
  3. JMH github
  1. JMH - Java Microbenchmark Harness
  2. Java 并发编程笔记:JMH 性能测试框架
  3. Java微基准测试框架JMH
  4. 为什么需要基准测试

响应式编程

版权声明


相关文章:

  • md5num命令2024-10-29 21:01:06
  • 灰度发布管理平台2024-10-29 21:01:06
  • jstl标签作用2024-10-29 21:01:06
  • 前端开发vue需要学多久2024-10-29 21:01:06
  • 家庭版怎样打开组策略编辑器2024-10-29 21:01:06
  • 命名实体识别可以得到哪项结果2024-10-29 21:01:06
  • 尺度空间安全吗2024-10-29 21:01:06
  • js文件中引入js文件2024-10-29 21:01:06
  • 853端口的DNS有哪些2024-10-29 21:01:06
  • 类的成员变量默认权限2024-10-29 21:01:06