性能分析工具JMH(二)
来源:互联网 发布:中国大豆进口数据 编辑:程序博客网 时间:2024/06/05 06:25
前言
JMH是一个微基准测试框架,什么是微基准测试?
Micro benchmark is a benchmark designed to measure the performance of a very small and specific piece of code.
微基准是一个旨在衡量非常小以及特定代码性能的基准,基准测试是实现对一类测试对象的某项性能指标进行定量的和可对比的测试。简而言之JMH可以非常方便的帮助我们进行java代码的简单基准测试。
正文
JMH方便我们进行微基准测试。比如,在进行微基准测试时,我们想要测试的是“程序被JVM编译成机器代码(而不是直接执行字节码)”的执行速度。为了让JVM把要测试的代码编译成机器码,我们可能需要把要测试的代码进行“预热处理”(就是先跑几回,或十几回等,当运行的次多了,JVM就会生成机器码),JMH就提供“预热处理”等一系列的处理。
一、注解进行梳理和总结:
@BenchmarkMode
基准测试类型
@OutputTimeUnit
指定时间单位,它需要一个标准Java类型java.util.concurrent.TimeUnit作为参数。可是如果在一个测试中指定了多种测试模式,给定的时间单位将用于所有的测试(比如,测试SampleTime适宜使用纳秒,但是throughput使用更长的时间单位测量更合适)。
@Warmup
上面我们提到了,进行基准测试前需要进行预热。一般我们前几次进行程序测试的时候都会比较慢,所以要让程序进行几轮预热,保证测试的准确性。其中的参数iterations也就非常好理解了,就是预热轮数。
@State
注解定义了给定类实例的可用范围。JMH可以在多线程同时运行的环境测试,因此需要选择正确的状态。当使用@Setup参数的时候,必须在类上加这个参数,不然会提示无法运行。
除了将单独的类标记@State,也可以将你自己的benchmark类使用@State标记。上面所有的规则对这种情况也适用。
@Measurement
度量,其实就是一些基本的测试参数。iterations进行测试的轮次,time每轮进行的时长,timeUnit时长单位。都是一些基本的参数,可以根据具体情况调整。一般比较重的东西可以进行大量的测试,放到服务器上运行。
方法注解总是优先于类的注解
参考文章:
http://www.importnew.com/12548.html
http://irfen.me/java-jmh-simple-microbenchmark/
http://blog.csdn.net/hotdust/article/details/72643696
阅读全文
0 0
- 性能分析工具JMH(二)
- 性能分析工具JMH(一)
- Java 性能测试工具 JMH
- Android性能分析工具(二)
- 性能调试---(二)性能分析工具
- 性能调试---(二)性能分析工具
- 性能调试---(一)性能分析准则---(二)性能分析工具
- Linux 平台上的 Oprofile 性能分析工具(二)
- LoadRunner性能测试工具---(二)测试结果分析
- 性能测试工具二(数据库性能分析与诊断工具 tell the bees)
- JMH工具进行基准测试简单使用
- Java性能优化指南系列(二):Java 性能分析工具
- Java性能优化指南系列(二):Java 性能分析工具
- Java性能优化指南系列(二):Java 性能分析工具
- 写在Linux七天系列之前(五)—性能测试工具curl-loader二---测试分析
- 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(二)
- 写在Linux七天系列之前(五)—性能测试工具curl-loader二---测试分析
- 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(二)
- C#基础(13)——面向对象命名空间\值类型引用类型\字符串
- Oracle的Redo的作用及原理
- C#linq和lamda两种写法返回的集合中的对象元素引用情况不同,循环计算值要小心
- GCC对C语言的一些扩展小结
- 面试题总结
- 性能分析工具JMH(二)
- 竞争编码一些数字的计算问题
- Eclipse学习系列 -- TCP/IP Monitor(转载)
- codeforces 120C Winnie-the-Pooh and honey
- 1000以内素数的判断
- HIVE备份--批量导出HIVE建表语句
- 如何让网页自适应屏幕宽度
- PHP-FPM命令
- 【数学基础】CQYZ_Vijos_P3768 热身赛 Suspect