Java 代码性能测试实战之 ContiPerf
一、前言
最近测试一个开源项目,发现生成的
全局id
有重复,方法加上 synchronized 提交 PR 后,有些同行对性能有疑虑,就准备做个 代码性能测试Java 基准性能测试 一般用 JMH 比较多,但是 官方建议 性能测试单独一个项目,感觉麻烦了点
后面发现了 ContiPerf,可以方便的设置 执行次数、时长、线程数、预热时长,还有 Html 格式报告,感觉还比较适合,基于 Junit
二、ContiPerf
1. 安装
有 2 个仓库,这里选择 javatlacati 二开以后的
选择 2.4.3 版本,基于 Junit4,更好的支持 @After
另最新 2.4.4-SNAPSHOT 版本,基于 Junit5
2. 使用
首先,单元测试类 增加属性 ContiPerfRule
测试方法增加 Junit4 的 @Test 注解
增加 @PerfTest,配置 invocations 次数,或 duration 毫秒时长,threads 线程数
性能测试嘛,最好配置 预热时长 warmUp,单位也是 毫秒
多种不同线程数的测试,可以 多个方法加 @PerfTest 注解哦(这种情况建议把 线程数加到 测试方法名末尾,线程数小于 10 的 补 0,同时测试类增加 @FixMethodOrder(MethodSorters.NAME_ASCENDING),生成的 报告就按 线程数排序了)
还可以配置 @Required 结果校验哦,如下示例:每秒吞吐量要 大于等于 100 万
3. 性能测试效果
所有的 PerfTest 结果都输出到 target/contiperf-report/index.html
4. 示例 2:多线程生成 id,有无重复校验
ids 要使用 支持并发的容器,不然多线程 会报错
@AfterClass 做结果校验
三、总结
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明,否则将追究法律责任。
本文首先发布于 https://www.890808.xyz/ ,其他平台需要审核更新慢一些。
版权声明: 本文为 InfoQ 作者【javalover123】的原创文章。
原文链接:【http://xie.infoq.cn/article/fd037220eb77aae627ab39843】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论