JMH 基础
Java Microbenchmark Harness 用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级
可以规避JVM中的JIT 或者其他优化对性能测试造成的影响.JIT(just in time comlilation) 某段代码第一次执行时进行编译,编译成机器码 提高执行速度
当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用 JMH 对优化的结果进行量化的分析
注解:
- @Benchmark 注解需要测试性能的类 或 方法
- @BenchmarkMode({Mode.xxx}) 配置基准测试模式
- 可选模式有
- Throughput 整体吞吐量 ops/time
- AverageTime 平均时间 time/op
- SampleTime 随机取样
- SingleShotTime 只运行一次 且Warmup为0 常用于测试冷启动性能
- ALL 上面所有模式都执行一次
- @State(Scope.xxx)
- 指定对象作用范围
- Benchmark 测试线程共享一个实例 测试多线程共享下的性能
- Group 组内共享
- Thread 默认状态 每个测试线程分配一个实例
- @OutputTimeUnit 统计时间单位
- @Warmup 预热次数 itrations,time,timeUnit,batchSize
- @Measurement 实际调用时的基本参数
- @Thread 每个进程中的测试线程
- @Fork fork的进程数量
- @Param 指定某参数的多种情况
- @Setup 执行benchmark前执行 用于初始化
- @TearDown 执行benchmark后执行 用于资源回收
标签:框架,基准,JMH,线程,测试,time,执行,性能 来源: https://www.cnblogs.com/lancelee98/p/15259058.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。