欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java代碼性能測(cè)試實(shí)戰(zhàn)之ContiPerf安裝使用

 更新時(shí)間:2023年06月26日 11:25:00   作者:javalover123  
這篇文章主要為大家介紹了Java代碼性能測(cè)試實(shí)戰(zhàn)之ContiPerf安裝使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、前言

  • 最近測(cè)試一個(gè)開源項(xiàng)目,發(fā)現(xiàn)生成的 全局id 有重復(fù),方法加上 synchronized 提交PR后,有些同行對(duì)性能有疑慮,就準(zhǔn)備做個(gè) 代碼性能測(cè)試
  • Java基準(zhǔn)性能測(cè)試 一般用 JMH 比較多,但是 官方建議 性能測(cè)試單獨(dú)一個(gè)項(xiàng)目,感覺(jué)麻煩了點(diǎn)
  • 后面發(fā)現(xiàn)了 ContiPerf,可以方便的設(shè)置 執(zhí)行次數(shù)、時(shí)長(zhǎng)、線程數(shù)、預(yù)熱時(shí)長(zhǎng),還有 Html格式報(bào)告,感覺(jué)還比較適合,基于 Junit

二、ContiPerf

1. 安裝

  • 有2個(gè)倉(cāng)庫(kù),這里選擇 javatlacati 二開以后的
  • 選擇 2.4.3 版本,基于 Junit4,更好的支持 @After
  • 另最新 2.4.4-SNAPSHOT 版本,基于Junit5
    <dependencies>
        <!-- 引入 ContiPerf 測(cè)試工具,參考 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. 使用

  • 首先,單元測(cè)試類 增加屬性 ContiPerfRule
  • 測(cè)試方法增加 Junit4 的 @Test 注解
  • 增加 @PerfTest,配置 invocations 次數(shù),或 duration 毫秒時(shí)長(zhǎng),threads 線程數(shù)
  • 性能測(cè)試嘛,最好配置 預(yù)熱時(shí)長(zhǎng) warmUp,單位也是 毫秒
  • 多種不同線程數(shù)的測(cè)試,可以 多個(gè)方法加 @PerfTest 注解哦(這種情況建議把 線程數(shù)加到 測(cè)試方法名末尾,線程數(shù)小于 10的 補(bǔ)0,同時(shí)測(cè)試類增加 @FixMethodOrder(MethodSorters.NAME_ASCENDING),生成的 報(bào)告就按 線程數(shù)排序了)
  • 還可以配置 @Required 結(jié)果校驗(yàn)哦,如下示例:每秒吞吐量要 大于等于 100萬(wàn)
    @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. 性能測(cè)試效果

所有的 PerfTest 結(jié)果都輸出到 target/contiperf-report/index.html

4. 多線程生成id,有無(wú)重復(fù)校驗(yàn)

  • ids 要使用 支持并發(fā)的容器,不然多線程 會(huì)報(bào)錯(cuò)
  • @AfterClass 做結(jié)果校驗(yàn)
    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());
    }

三、總結(jié)

ContiPerf,可以方便的設(shè)置 執(zhí)行次數(shù)、時(shí)長(zhǎng)、線程數(shù)、預(yù)熱時(shí)長(zhǎng),還有 Html格式報(bào)告,是個(gè)比較便捷的 代碼性能測(cè)試工具

更專業(yè)的 Java 微基準(zhǔn)性能測(cè)試,也可以考慮 JMH 哦

以上就是Java代碼性能測(cè)試實(shí)戰(zhàn)之ContiPerf安裝使用的詳細(xì)內(nèi)容,更多關(guān)于Java性能測(cè)試ContiPerf的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java 設(shè)計(jì)模型之單例模式詳解

    java 設(shè)計(jì)模型之單例模式詳解

    本文主要介紹了java 單例模式,單例對(duì)象(Singleton)是一種常用的設(shè)計(jì)模式。在Java應(yīng)用中,單例對(duì)象能保證在一個(gè)JVM中,該對(duì)象只有一個(gè)實(shí)例存在,希望能幫助有需要的同學(xué)
    2016-07-07
  • MyBatis 動(dòng)態(tài)SQL和緩存機(jī)制實(shí)例詳解

    MyBatis 動(dòng)態(tài)SQL和緩存機(jī)制實(shí)例詳解

    這篇文章主要介紹了MyBatis 動(dòng)態(tài)SQL和緩存機(jī)制實(shí)例詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-09-09
  • springboot+websocket+redis搭建的實(shí)現(xiàn)

    springboot+websocket+redis搭建的實(shí)現(xiàn)

    這篇文章主要介紹了springboot+websocket+redis搭建的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java util concurrent及基本線程原理簡(jiǎn)介

    Java util concurrent及基本線程原理簡(jiǎn)介

    這篇文章主要介紹了Java util concurrent及基本線程原理簡(jiǎn)介,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 一文教你學(xué)會(huì)如何使用MyBatisPlus

    一文教你學(xué)會(huì)如何使用MyBatisPlus

    本篇文章,我們通過(guò) MyBatis Plus 來(lái)對(duì)一張表進(jìn)行 CRUD 操作,來(lái)看看是如何簡(jiǎn)化我們開發(fā)的,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • 關(guān)于ReentrantLock的實(shí)現(xiàn)原理解讀

    關(guān)于ReentrantLock的實(shí)現(xiàn)原理解讀

    這篇文章主要介紹了關(guān)于ReentrantLock的實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 如何使用RequestHeaders添加自定義參數(shù)

    如何使用RequestHeaders添加自定義參數(shù)

    這篇文章主要介紹了使用RequestHeaders添加自定義參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-02-02
  • Java通過(guò)SMS短信平臺(tái)實(shí)現(xiàn)發(fā)短信功能 含多語(yǔ)言

    Java通過(guò)SMS短信平臺(tái)實(shí)現(xiàn)發(fā)短信功能 含多語(yǔ)言

    這篇文章主要為大家詳細(xì)介紹了Java通過(guò)SMS短信平臺(tái)實(shí)現(xiàn)發(fā)短信功能的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 解決日期轉(zhuǎn)化Json異常- Date JSON parse error

    解決日期轉(zhuǎn)化Json異常- Date JSON parse error

    這篇文章主要介紹了解決日期轉(zhuǎn)化Json異常- Date JSON parse error問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • SpringBoot配置MyBatis-Plus實(shí)現(xiàn)增刪查改

    SpringBoot配置MyBatis-Plus實(shí)現(xiàn)增刪查改

    本文主要介紹了SpringBoot配置MyBatis-Plus實(shí)現(xiàn)增刪查改,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論