AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

OpenJDK JMH——Java程序的基準(zhǔn)測試工具

來源: 責(zé)編: 時(shí)間:2023-10-23 17:06:02 322觀看
導(dǎo)讀背景JMH(Java Microbenchmark Harness)是一個(gè)專門用于編寫、運(yùn)行和分析Java微基準(zhǔn)測試的工具。它是由OpenJDK項(xiàng)目提供的一個(gè)開源項(xiàng)目,旨在幫助開發(fā)人員準(zhǔn)確地測量和評估Java代碼的性能。JMH提供了一組注解和API,使得編寫

hXE28資訊網(wǎng)——每日最新資訊28at.com

背景

JMH(Java Microbenchmark Harness)是一個(gè)專門用于編寫、運(yùn)行和分析Java微基準(zhǔn)測試的工具。它是由OpenJDK項(xiàng)目提供的一個(gè)開源項(xiàng)目,旨在幫助開發(fā)人員準(zhǔn)確地測量和評估Java代碼的性能。hXE28資訊網(wǎng)——每日最新資訊28at.com

JMH提供了一組注解和API,使得編寫微基準(zhǔn)測試變得簡單和方便。使用JMH,您可以定義和運(yùn)行各種類型的基準(zhǔn)測試,包括方法級(jí)別的基準(zhǔn)測試、類級(jí)別的基準(zhǔn)測試和多線程基準(zhǔn)測試。JMH還提供了豐富的選項(xiàng)和配置,以控制基準(zhǔn)測試的執(zhí)行方式,如迭代次數(shù)、線程數(shù)、預(yù)熱時(shí)間等。hXE28資訊網(wǎng)——每日最新資訊28at.com

JMH的主要特點(diǎn)包括:hXE28資訊網(wǎng)——每日最新資訊28at.com

  • 自動(dòng)優(yōu)化:JMH會(huì)自動(dòng)優(yōu)化基準(zhǔn)測試,以消除熱點(diǎn)代碼的影響,并提供準(zhǔn)確的性能度量。
  • 避免優(yōu)化:JMH使用黑魔法技巧來避免JIT編譯器過早優(yōu)化基準(zhǔn)測試代碼。
  • 統(tǒng)計(jì)數(shù)據(jù):JMH提供了豐富的統(tǒng)計(jì)數(shù)據(jù)和報(bào)告,包括平均執(zhí)行時(shí)間、吞吐量、標(biāo)準(zhǔn)差等,以幫助您分析和理解基準(zhǔn)測試的性能。
  • 基準(zhǔn)測試模式:JMH支持多種基準(zhǔn)測試模式,如平均時(shí)間模式、吞吐量模式、采樣模式等,以滿足不同的性能測試需求。

JMH使用方法

使用JMH編寫和運(yùn)行基準(zhǔn)測試的一般步驟包括:hXE28資訊網(wǎng)——每日最新資訊28at.com

  • 在測試類或測試方法上使用JMH提供的注解,如@Benchmark、@State、@Setup等,來定義基準(zhǔn)測試。
  • 使用JMH提供的命令行工具或API來運(yùn)行基準(zhǔn)測試,并指定相關(guān)的選項(xiàng)和參數(shù)。
  • 分析和解釋JMH生成的性能報(bào)告,以評估和優(yōu)化代碼的性能。

JMH使用示例

jmh提供了大量的測試用例,參考資料【1】所示。hXE28資訊網(wǎng)——每日最新資訊28at.com

@BenchmarkMode(Mode.AverageTime)@OutputTimeUnit(TimeUnit.NANOSECONDS)public class JMHSample_21_ConsumeCPU {    /*     * At times you require the test to burn some of the cycles doing nothing.     * In many cases, you *do* want to burn the cycles instead of waiting.     *     * For these occasions, we have the infrastructure support. Blackholes     * can not only consume the values, but also the time! Run this test     * to get familiar with this part of JMH.     *     * (Note we use static method because most of the use cases are deep     * within the testing code, and propagating blackholes is tedious).     */    @Benchmark    public void consume_0000() {        Blackhole.consumeCPU(0);    }    @Benchmark    public void consume_0001() {        Blackhole.consumeCPU(1);    }    @Benchmark    public void consume_0002() {        Blackhole.consumeCPU(2);    }    @Benchmark    public void consume_0004() {        Blackhole.consumeCPU(4);    }    @Benchmark    public void consume_0008() {        Blackhole.consumeCPU(8);    }    @Benchmark    public void consume_0016() {        Blackhole.consumeCPU(16);    }    @Benchmark    public void consume_0032() {        Blackhole.consumeCPU(32);    }    @Benchmark    public void consume_0064() {        Blackhole.consumeCPU(64);    }    @Benchmark    public void consume_0128() {        Blackhole.consumeCPU(128);    }    @Benchmark    public void consume_0256() {        Blackhole.consumeCPU(256);    }    @Benchmark    public void consume_0512() {        Blackhole.consumeCPU(512);    }    @Benchmark    public void consume_1024() {        Blackhole.consumeCPU(1024);    }    /*     * ============================== HOW TO RUN THIS TEST: ====================================     *     * Note the single token is just a few cycles, and the more tokens     * you request, then more work is spent (almost linearly)     *     * You can run this test:     *     * a) Via the command line:     *    $ mvn clean install     *    $ java -jar target/benchmarks.jar JMHSample_21 -f 1     *    (we requested single fork; there are also other options, see -h)     *     * b) Via the Java API:     *    (see the JMH homepage for possible caveats when running from IDE:     *      http://openjdk.java/projects/code-tools/jmh/)     */    public static void main(String[] args) throws RunnerException {        Options opt = new OptionsBuilder()                .include(JMHSample_21_ConsumeCPU.class.getSimpleName())                .forks(1)                .build();        new Runner(opt).run();    }}

JMH總結(jié)

JMH是一個(gè)強(qiáng)大的工具,可以幫助開發(fā)人員進(jìn)行準(zhǔn)確和可靠的Java微基準(zhǔn)測試,以評估和改進(jìn)代碼的性能。它廣泛應(yīng)用于Java開發(fā)社區(qū),并被認(rèn)為是Java性能測試領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。hXE28資訊網(wǎng)——每日最新資訊28at.com

參考資料:

【1】https://github.com/openjdk/jmh/tree/master/jmh-samples/src/main/java/org/openjdk/jmh/samples。hXE28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-14626-0.htmlOpenJDK JMH——Java程序的基準(zhǔn)測試工具

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 軟件設(shè)計(jì)模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

下一篇: Nuxt 3.8 正式發(fā)布,一起來看看都有哪些功能吧!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價(jià)12999元,比發(fā)布價(jià)便宜了7000元,在大屏電視市場開卷。據(jù)了解,Redmi MAX 100
  • 分布式系統(tǒng)中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統(tǒng)的小伙伴們來說,一提起分布式系統(tǒng),就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統(tǒng)
  • 19個(gè) JavaScript 單行代碼技巧,讓你看起來像個(gè)專業(yè)人士

    今天這篇文章跟大家分享18個(gè)JS單行代碼,你只需花幾分鐘時(shí)間,即可幫助您了解一些您可能不知道的 JS 知識(shí),如果您已經(jīng)知道了,就當(dāng)作復(fù)習(xí)一下,古人云,溫故而知新嘛。現(xiàn)在,我們就開始今
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營,這意味著騰訊音樂長音頻業(yè)務(wù)走向消亡。騰訊在長音頻領(lǐng)域還在摸索。為
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報(bào)道稱,近期淘寶天貓集團(tuán)啟動(dòng)了近年來最大的人力制度改革,涉及員工績效、層級(jí)體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的“征求意見版”:1、取消P序列
  • 馮提莫簽約抖音公會(huì) 前“斗魚一姐”消失在直播間

    來源:直播觀察提起“馮提莫”這個(gè)名字,很多網(wǎng)友或許聽過,但應(yīng)該不記得她是哪位主播了。其實(shí),作為曾經(jīng)的“斗魚一姐”,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事“起猛了,我能看得懂日語了”。“為什么日本人說話我能聽懂?”“中文不像中文,日語不像日語,但是我竟然看懂了”…&hell
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機(jī)模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強(qiáng)5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競屏,同時(shí)在快充
Top