Java代碼性能測試實戰(zhàn)之ContiPerf安裝使用
更新時間:2023年06月26日 11:25:00 作者:javalover123
這篇文章主要為大家介紹了Java代碼性能測試實戰(zhàn)之ContiPerf安裝使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
一、前言
- 最近測試一個開源項目,發(fā)現(xiàn)生成的
全局id
有重復,方法加上 synchronized 提交PR后,有些同行對性能有疑慮,就準備做個 代碼性能測試 - Java基準性能測試 一般用 JMH 比較多,但是 官方建議 性能測試單獨一個項目,感覺麻煩了點
- 后面發(fā)現(xiàn)了 ContiPerf,可以方便的設置 執(zhí)行次數、時長、線程數、預熱時長,還有 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 要使用 支持并發(fā)的容器,不然多線程 會報錯
- @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,可以方便的設置 執(zhí)行次數、時長、線程數、預熱時長,還有 Html格式報告,是個比較便捷的 代碼性能測試工具
更專業(yè)的 Java 微基準性能測試,也可以考慮 JMH 哦
以上就是Java代碼性能測試實戰(zhàn)之ContiPerf安裝使用的詳細內容,更多關于Java性能測試ContiPerf的資料請關注腳本之家其它相關文章!
相關文章
springboot+websocket+redis搭建的實現(xiàn)
這篇文章主要介紹了springboot+websocket+redis搭建的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Java通過SMS短信平臺實現(xiàn)發(fā)短信功能 含多語言
這篇文章主要為大家詳細介紹了Java通過SMS短信平臺實現(xiàn)發(fā)短信功能的相關資料,感興趣的小伙伴們可以參考一下2016-07-07解決日期轉化Json異常- Date JSON parse error
這篇文章主要介紹了解決日期轉化Json異常- Date JSON parse error問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06SpringBoot配置MyBatis-Plus實現(xiàn)增刪查改
本文主要介紹了SpringBoot配置MyBatis-Plus實現(xiàn)增刪查改,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08