Java代码性能测试实战之ContiPerf安装使用

 更新时间:2023年06月26日 11:25:00   作者:javalover123  
这篇文章主要为大家介绍了Java代码性能测试实战之ContiPerf安装使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、前言

  • 最近测试一个开源项目,发现生成的 全局id 有重复,方法加上 synchronized 提交PR后,有些同行对性能有疑虑,就准备做个 代码性能测试
  • Java基准性能测试 一般用 JMH 比较多,但是 官方建议 性能测试单独一个项目,感觉麻烦了点
  • 后面发现了 ContiPerf,可以方便的设置 执行次数、时长、线程数、预热时长,还有 Html格式报告,感觉还比较适合,基于 Junit

二、ContiPerf

1. 安装

  • 有2个仓库,这里选择 javatlacati 二开以后的
  • 选择 2.4.3 版本,基于 Junit4,更好的支持 @After
  • 另最新 2.4.4-SNAPSHOT 版本,基于Junit5
    <dependencies>
        <!-- 引入 ContiPerf 测试工具,参考 https://gitee.com/yu120/sequence -->
        <dependency>
            <groupId>com.github.javatlacati</groupId>
            <artifactId>contiperf</artifactId>
            <version>2.4.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2. 使用

  • 首先,单元测试类 增加属性 ContiPerfRule
  • 测试方法增加 Junit4 的 @Test 注解
  • 增加 @PerfTest,配置 invocations 次数,或 duration 毫秒时长,threads 线程数
  • 性能测试嘛,最好配置 预热时长 warmUp,单位也是 毫秒
  • 多种不同线程数的测试,可以 多个方法加 @PerfTest 注解哦(这种情况建议把 线程数加到 测试方法名末尾,线程数小于 10的 补0,同时测试类增加 @FixMethodOrder(MethodSorters.NAME_ASCENDING),生成的 报告就按 线程数排序了)
  • 还可以配置 @Required 结果校验哦,如下示例:每秒吞吐量要 大于等于 100万
    @org.junit.Rule
    public ContiPerfRule contiPerfRule = new ContiPerfRule();
    @org.junit.Test
    @com.github.javatlacati.contiperf.Required(throughput = 100_0000)
    @PerfTest(duration = 3300, threads = 4, warmUp = 300)
    public void generateId04Threads() {
        generateIdThreads();
    }

3. 性能测试效果

所有的 PerfTest 结果都输出到 target/contiperf-report/index.html

4. 多线程生成id,有无重复校验

  • ids 要使用 支持并发的容器,不然多线程 会报错
  • @AfterClass 做结果校验
    private static final Set<Long> ids = new ConcurrentHashSet<>((int) (INVOCATIONS / 0.7));
    @AfterClass
    public static void tearDown() {
        Assert.assertEquals("generateId duplicated", INVOCATIONS, ids.size());
    }
    @Test @PerfTest(invocations = INVOCATIONS, threads = 4)
    public void generateId() {
        ids.add(UniqueIdGenerator.generateId());
    }

三、总结

ContiPerf,可以方便的设置 执行次数、时长、线程数、预热时长,还有 Html格式报告,是个比较便捷的 代码性能测试工具

更专业的 Java 微基准性能测试,也可以考虑 JMH 哦

以上就是Java代码性能测试实战之ContiPerf安装使用的详细内容,更多关于Java性能测试ContiPerf的资料请关注脚本之家其它相关文章!

相关文章

  • 远程连接Jedis和整合SpringBoot的详细过程

    远程连接Jedis和整合SpringBoot的详细过程

    这篇文章主要介绍了远程连接Jedis和整合SpringBoot的详细过程,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Springboot整合xxl-job实现动态传参

    Springboot整合xxl-job实现动态传参

    XXL-JOB是一个分布式任务调度平台,本文主要介绍了Springboot整合xxl-job实现动态传参,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • java使用GeoTools读取shp文件并画图的操作代码

    java使用GeoTools读取shp文件并画图的操作代码

    GeoTools是ArcGis地图与java对象的桥梁,今天通过本文给大家分享java使用GeoTools读取shp文件并画图,文章通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • 详解Java实现缓存(LRU,FIFO)

    详解Java实现缓存(LRU,FIFO)

    本篇文章主要介绍了详解Java实现缓存(LRU,FIFO) ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • SpringBoot中使用Redis对接口进行限流的实现

    SpringBoot中使用Redis对接口进行限流的实现

    本文将结合实例代码,介绍SpringBoot中使用Redis对接口进行限流的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 详解Java中Method的Invoke方法

    详解Java中Method的Invoke方法

    这篇文章主要介绍了详解Java中Method的Invoke方法,需要的朋友可以参考下
    2017-10-10
  • Java下载图片并导出压缩包的实现步骤

    Java下载图片并导出压缩包的实现步骤

    用Java和Vue编写接口来下载网络图片并导出压缩包,首先,我得分解一下这个问题,看看需要哪些步骤,后端用Java处理图片下载和压缩,前端用Vue提供界面和触发下载,本文通过代码示例给大家介绍了Java下载图片并导出压缩包的实现步骤,需要的朋友可以参考下
    2025-08-08
  • java实现List中对象排序的方法

    java实现List中对象排序的方法

    这篇文章主要介绍了java实现List中对象排序的方法,涉及Java中的遍历与对象操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Servlet中/和/*的区别详解

    Servlet中/和/*的区别详解

    本文将分析/和/*的区别这个老生常谈的问题,但是很多时候看完就忘了,关于此问题这一篇文章就够了,它将成为你的永久记忆,感兴趣的可以了解一下
    2021-07-07
  • Java中使用qsort对类进行排序的操作代码

    Java中使用qsort对类进行排序的操作代码

    这篇文章主要介绍了JAVA中如何使用qsort对类进行排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09

最新评论