当前位置:首页 > 科技  > 软件

OpenJDK JMH——Java程序的基准测试工具

来源: 责编: 时间:2023-10-23 17:06:02 460观看
导读背景JMH(Java Microbenchmark Harness)是一个专门用于编写、运行和分析Java微基准测试的工具。它是由OpenJDK项目提供的一个开源项目,旨在帮助开发人员准确地测量和评估Java代码的性能。JMH提供了一组注解和API,使得编写

iH528资讯网——每日最新资讯28at.com

背景

JMH(Java Microbenchmark Harness)是一个专门用于编写、运行和分析Java微基准测试的工具。它是由OpenJDK项目提供的一个开源项目,旨在帮助开发人员准确地测量和评估Java代码的性能。iH528资讯网——每日最新资讯28at.com

JMH提供了一组注解和API,使得编写微基准测试变得简单和方便。使用JMH,您可以定义和运行各种类型的基准测试,包括方法级别的基准测试、类级别的基准测试和多线程基准测试。JMH还提供了丰富的选项和配置,以控制基准测试的执行方式,如迭代次数、线程数、预热时间等。iH528资讯网——每日最新资讯28at.com

JMH的主要特点包括:iH528资讯网——每日最新资讯28at.com

  • 自动优化:JMH会自动优化基准测试,以消除热点代码的影响,并提供准确的性能度量。
  • 避免优化:JMH使用黑魔法技巧来避免JIT编译器过早优化基准测试代码。
  • 统计数据:JMH提供了丰富的统计数据和报告,包括平均执行时间、吞吐量、标准差等,以帮助您分析和理解基准测试的性能。
  • 基准测试模式:JMH支持多种基准测试模式,如平均时间模式、吞吐量模式、采样模式等,以满足不同的性能测试需求。

JMH使用方法

使用JMH编写和运行基准测试的一般步骤包括:iH528资讯网——每日最新资讯28at.com

  • 在测试类或测试方法上使用JMH提供的注解,如@Benchmark、@State、@Setup等,来定义基准测试。
  • 使用JMH提供的命令行工具或API来运行基准测试,并指定相关的选项和参数。
  • 分析和解释JMH生成的性能报告,以评估和优化代码的性能。

JMH使用示例

jmh提供了大量的测试用例,参考资料【1】所示。iH528资讯网——每日最新资讯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是一个强大的工具,可以帮助开发人员进行准确和可靠的Java微基准测试,以评估和改进代码的性能。它广泛应用于Java开发社区,并被认为是Java性能测试领域的事实标准。iH528资讯网——每日最新资讯28at.com

参考资料:

【1】https://github.com/openjdk/jmh/tree/master/jmh-samples/src/main/java/org/openjdk/jmh/samples。iH528资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-14626-0.htmlOpenJDK JMH——Java程序的基准测试工具

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 软件设计模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

下一篇: Nuxt 3.8 正式发布,一起来看看都有哪些功能吧!

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 郭明錤称华为和江淮汽车合作开发问界MPV,定价100万左右、计划明年量产

    8 月 1 日消息,郭明錤今天在 Medium 平台发布博文,称华为正在和江淮汽车合作,开发售价在 100 万元的问界 MPV,预计在 2024 年第 2 季度量产,销量目标为
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
  • Meta盲目扩张致超万人被裁,重金押注元宇宙而前景未明

    图片来源:图虫创意日前,Meta创始人兼CEO 马克·扎克伯发布公开信,宣布Meta计划裁员超11000人,占其员工总数13%。他公开承认了自己的预判失误:“不仅
Top