JMH 简单入门

什么是 JMH

JMH 是 Java Microbenchmark Harness 的缩写。中文意思大致是 “JAVA 微基准测试套件”。首先先明白什么是“基准测试”。百度百科给的定义如下:

基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。

可以简单的类比成我们电脑常用的鲁大师,或者手机常用的跑分软件安兔兔之类的性能检测软件。都是按一定的基准或者在特定条件下去测试某一对象的的性能,比如显卡、IO、CPU之类的。

为什么要使用 JMH

基准测试的特质有如下几种:

①、可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的长期变化趋势,为系统调优和上线前的容量规划做参考。

②、可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和分析测试过程发生了什么。

③、可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树状图等形式)。

④、真实性:测试的结果反映了客户体验到的真实的情况(真实准确的业务场景+与生产一致的配置+合理正确的测试方法)。

⑤、可执行性:相关人员可以快速的进行测试验证修改调优(可定位可分析)。

可见要做一次符合特质的基准测试,是很繁琐也很困难的。外界因素很容易影响到最终的测试结果。特别对于 JAVA的基准测试。

有些文章会告诉我们 JAVA是 C++编写的,一般来说 JAVA编写的程序不太可能比 C++编写的代码运行效率更好。但是JAVA在某些场景的确要比 C++运行的更高效。不要觉得天方夜谭。其实 JVM随着这些年的发展已经变得很智能,它会在运行期间不断的去优化。

这对于我们程序来说是好事,但是对于性能测试就头疼的。你运行的次数与时间不同可能获得的结果也不同,很难获得一个比较稳定的结果。对于这种情况,有一个解决办法就是大量的重复调用,并且在真正测试前还要进行一定的预热,使结果尽可能的准确。

除了这些,对于结果我们还需要一个很好的展示,可以让我们通过这些展示结果判断性能的好坏。

而这些JMH都有!

最新文章

  1. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
  2. 大数据系列(1)——Hadoop集群坏境搭建配置
  3. linux开发缩写
  4. PHP读取Excel数据写入数据库(包含图片和文字)
  5. caffe的python接口学习(3):训练模型(training)
  6. 使用Spring发送邮件
  7. 重新安装配置ubuntu的引导菜单
  8. Hibernate,JPA注解@OneToMany_Map
  9. Python入门 学习笔记 (一)
  10. Javascript基础学习(1)_类型、值和变量
  11. div中的内容居中
  12. 如何使用service命令来管理nginx
  13. 【Android UI设计和开发】动画(Animation)详细说明(一)
  14. Centos下Sphinx的下载与编译安装
  15. java将字符串转换为指定的时间格式
  16. 关于PHP包含文件的方法
  17. vs2015 key
  18. BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元+bitset
  19. 推荐几种Java任务调度的实现
  20. Centos7 HyperLedger Fabric 1.4 生产环境部署

热门文章

  1. NLP(十二)依存句法分析的可视化及图分析
  2. 通过ping命令了解三层转发流程
  3. 【iOS】CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
  4. 从“n!末尾有多少个0”谈起
  5. CentOS系统故障 | 一桩"血案"引发的容器存储驱动比较
  6. Netty源码解析---服务端启动
  7. Jquery事件和选择器 纠错
  8. java常见面试题目(二)
  9. 伽马变换(一些基本的灰度变换函数)基本原理及Python实现
  10. 【Java例题】2.6 三角形的面积