网站首页 > java教程 正文
JMH更有说服力的java性能测试。
看一个问题,在java中字符串的拼接有很多种方式,比如使用加号拼接或者使用StringBuilder进行拼接,在不考虑多线程的情况下,那么谁的性能更好呢?测试一下不就好了?没错,一般的写法是这种写法,这样写的准确吗?
这里面有以下几个问题:
·第一、时间精度问题,或许时间戳可能会存在误差。
·第二、JVM运行时会进行代码预热,这个意思就是代码越跑越快,第一次执行可能会慢一些。
·第三、JVM会对代码进行优化,有这些因素在可能导致测试结果不是那么准确。这里可以通过JMH进行性能测试。
JMH是java基准性能测试工具,并且它是由JVM的团队开发的,他们是更懂java的,这就很有说服力了。
接下来看一下代码示例:首先引入JMH依赖,我这里是java8,所以需要引入依赖。这里有两个方法,stringuild个是通过加号对字符串进行拼接,有一个通过StringBuilder进行字符串拼接。
首先说一下这个注解,这个注解就叫基准测试,主要用来测试方法的性能。上面这个注解用于选择指定模式,这里统计平均响应时间、输出时间单位。这里选用的是纳秒,在基准测试之前进行一次预热,然后进行五次的基准测试。
接下来运行看一眼效果,控制台打印了他的一些执行信息,比如这里的JDK版本,还有他的一些执行过程。最后他打印了一个测试报告,指定了模式,还有最后的成绩,可以发现stringbull的性能确实要好一些。最后小伙伴在技术选型的时候,可以借助这个工具对同类产品进行性能测试,还是比较有说服力的。
猜你喜欢
- 2024-09-09 Java测试人员必看,这个单元测试新工具简直6到飞起啊!
- 2024-09-09 Java单元测试框架Junit详解(java的单元测试框架)
- 2024-09-09 教你一招测试java代码,妈妈再也不用担心我有Bug了
- 2024-09-09 Java性能测试从入门到精通—详解篇
- 2024-09-09 使用JavaSnoop测试Java应用程序(测试 java)
- 2024-09-09 走进Java接口测试之Mock(概念篇)(java 接口测试)
- 2024-09-09 如何利用TestNG做接口自动化测试?Java+TestNG测试实例分享
- 2024-09-09 测试用例编写规范必看(测试用例范文)
- 2024-09-09 java 测试框架,测试http接口以及java方法
- 2024-09-09 Java程序员必须要知道的单元测试框架Junit详解
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)