日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

OpenJDK JMH——Java程序的基準測試工具

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

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

背景

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

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

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

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

JMH使用方法

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

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

JMH使用示例

jmh提供了大量的測試用例,參考資料【1】所示。8Gk28資訊網(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總結

JMH是一個強大的工具,可以幫助開發(fā)人員進行準確和可靠的Java微基準測試,以評估和改進代碼的性能。它廣泛應用于Java開發(fā)社區(qū),并被認為是Java性能測試領域的事實標準。8Gk28資訊網(wǎng)——每日最新資訊28at.com

參考資料:

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

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

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

上一篇: 軟件設計模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

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

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機的真機包裝盒在網(wǎng)上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • 消息稱迪士尼要拍真人版《魔發(fā)奇緣》:女主可能也找黑人演員

    8月5日消息,迪士尼確實有點忙,忙著將不少動畫改成真人版,繼《美人魚》后,真人版《白雪公主》、《魔發(fā)奇緣》也在路上了。據(jù)外媒消息稱,迪士尼將打造真人版
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數(shù)據(jù)從主存儲加載到KV緩存中,加速后續(xù)的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 東方甄選單飛:有些鳥注定是關不住的

    作者:彭寬鴻來源:華爾街科技眼‍‍‍‍‍‍‍‍‍‍東方甄選創(chuàng)始人俞敏洪帶隊的“7天甘肅行”直播活動已在近日順利收官。成立后一
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對于自己的“今天”,百度也很迷茫。“新業(yè)務到 2022 年底還是 0,希望 2023 年出來一個 1。”這是2022年底,李彥宏
  • 信通院:小米、華為等11家應用商店基本完成APP簽名及驗簽工作

    中國信通院表示,目前,小米、華為、OPPO、vivo、360手機助手、百度手機助手、應用寶、豌豆莢和努比亞等9家應用商店,以及抖音和快手2家新型應用分發(fā)平
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風扇版本

    據(jù)10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風扇版本。另外,這款顯卡 PCB
  • 電博會與軟博會實現(xiàn)"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發(fā)揮展會拉動人流、信息流、資金流實現(xiàn)快速交互流動的作用,繼而推動區(qū)域經(jīng)濟良性發(fā)展;又可以聚
Top 主站蜘蛛池模板: 确山县| 延长县| 朔州市| 万盛区| 沭阳县| 靖安县| 汝阳县| 额济纳旗| 金乡县| 南康市| 邯郸市| 阿鲁科尔沁旗| 分宜县| 日土县| 富锦市| 罗城| 本溪市| 青冈县| 饶河县| 广元市| 讷河市| 寿阳县| 安义县| 嵩明县| 迭部县| 兰州市| 南皮县| 商南县| 霍邱县| 兴化市| 改则县| 阳信县| 双辽市| 五家渠市| 峨边| 临安市| 广东省| 乌拉特后旗| 洛扎县| 昌平区| 瑞金市|