JMH 基准测试框架

JMH 基础

Java Microbenchmark Harness 用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级

可以规避JVM中的JIT 或者其他优化对性能测试造成的影响.JIT(just in time comlilation) 某段代码第一次执行时进行编译,编译成机器码 提高执行速度

当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用 JMH 对优化的结果进行量化的分析

注解:

  • @Benchmark 注解需要测试性能的类 或 方法
  • @BenchmarkMode({Mode.xxx}) 配置基准测试模式
    1. 可选模式有
    2. Throughput 整体吞吐量 ops/time
    3. AverageTime 平均时间 time/op
    4. SampleTime 随机取样
    5. SingleShotTime 只运行一次 且Warmup为0 常用于测试冷启动性能
    6. ALL 上面所有模式都执行一次
  • @State(Scope.xxx)
    1. 指定对象作用范围
    2. Benchmark 测试线程共享一个实例 测试多线程共享下的性能
    3. Group 组内共享
    4. Thread 默认状态 每个测试线程分配一个实例
  • @OutputTimeUnit 统计时间单位
  • @Warmup 预热次数 itrations,time,timeUnit,batchSize
  • @Measurement 实际调用时的基本参数
  • @Thread 每个进程中的测试线程
  • @Fork fork的进程数量
  • @Param 指定某参数的多种情况
  • @Setup 执行benchmark前执行 用于初始化
  • @TearDown 执行benchmark后执行 用于资源回收
原文地址:https://www.cnblogs.com/lancelee98/p/15259058.html