• 【Code Tools】Java微基准测试工具JMH之入门篇


    一、JMH是什么

      JMH是一个Java工具,用于构建、运行和分析用Java和其他语言编写的以JVM为目标的 nano/micro/milli/macro 基准测试。

    二、基本注意事项

    1)运行JMH基准测试的推荐方法是使用Maven设置一个独立的项目,该项目依赖于应用程序的jar文件。这种方法是首选的,以确保基准被正确初始化并产生可靠的结果。

    2)我们也可以在现有项目中运行基准测试,甚至可以在IDE中运行基准测试,但是设置更加复杂,结果也不那么可靠。
    3)在所有情况下,使用JMH的关键是使注释或字节码处理器能够生成合成的基准代码。Maven archetypes(原型)是用于启用此功能的主要机制。我们强烈建议新用户使用archetype设置正确的环境。

    三、通过Command Line(命令行)来创建JMH测试项目
    1)建立基准测试项目

    执行下面的maven命令将生成一个新的JMH-driven项目

    $ mvn archetype:generate 
              -DinteractiveMode=false 
              -DarchetypeGroupId=org.openjdk.jmh 
              -DarchetypeArtifactId=jmh-java-benchmark-archetype 
              -DgroupId=org.sample 
              -DartifactId=test 
              -Dversion=1.0

    2)Building项目

    $ cd test/
    $ mvn clean install

    3)运行该项目

    java -jar target/benchmarks.jar

    使用-h运行,查看可用的命令行选项。

    java -jar target/benchmarks.jar -h

    该项目目前没有任何测试代码,但可以看到运行效果,代码如下

    public class MyBenchmark {
        public MyBenchmark() {
        }
    
        @Benchmark
        public void testMethod() {
        //此处添加测试代码 } }

    运行结果如下:

    ➜  test java -jar target/benchmarks.jar
    # VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/bin/java
    # VM options: <none>
    # Warmup: 20 iterations, 1 s each
    # Measurement: 20 iterations, 1 s each
    # Threads: 1 thread, will synchronize iterations
    # Benchmark mode: Throughput, ops/time
    # Benchmark: org.sample.MyBenchmark.testMethod
    
    # Run progress: 0.00% complete, ETA 00:06:40
    # Fork: 1 of 10
    # Warmup Iteration   1: 3019163919.102 ops/s
    # Warmup Iteration   2: 3040718111.236 ops/s
    # Warmup Iteration   3: 3052170687.842 ops/s
    # Warmup Iteration   4: 3063995970.025 ops/s

    注:在处理大型项目时,通常将基准保存在单独的子项目中,然后通过通常的构建依赖关系依赖于测试的模块。

  • 相关阅读:
    14.挂载硬件设备
    13.Linux文件存储系统
    12.su 命令与sudo 服务
    11.文件访问控制列表
    10. 文件权限与归属
    9. Linux用户身份和能力
    8. Linux重要的环境变量
    7. Linux命令行的通配符、转义字符
    6. Linux输入输出重定向
    5. Linux文件目录管理和打包压缩与搜索命令
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/10680648.html
Copyright © 2020-2023  润新知