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

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

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

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

背景

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

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

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

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

JMH使用方法

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

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

JMH使用示例

jmh提供了大量的测试用例,参考资料【1】所示。Qng28资讯网——每日最新资讯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性能测试领域的事实标准。Qng28资讯网——每日最新资讯28at.com

参考资料:

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

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

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

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

下一篇: 一文掌握在PyCharm中正确设置Python项目

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 摸鱼心法第一章——和配置文件说拜拜

    摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 把LangChain跑起来的三个方法

    把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 之家push系统迭代之路

    之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 联想YOGA 16s 2022笔记本将要推出,屏幕支持触控功能

    联想YOGA 16s 2022笔记本将要推出,屏幕支持触控功能

    联想此前宣布,将于11月2日19:30召开联想秋季轻薄新品发布会,推出联想 YOGA 16s 2022 笔记本等新品。官方称,YOGA 16s 2022 笔记本将搭载 16 英寸屏幕,并且是一
Top
Baidu
map