zoukankan      html  css  js  c++  java
  • 【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

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

  • 相关阅读:
    c# Linq及Lamda表达式应用经验之 GroupBy 分组
    页面加载完之后在执行js代码
    C#循环声明一个类
    通过文件流stream下载文件
    jquery validate如何不提交表单就做验证(ajax提交数据)
    用vs2012的命令利用xsd文件生成对应的C#类,把xml的string类型映射到生成的类
    用xsd验证xml
    MVC中如何跳过对模型中某个属性的验证
    用list<类>集合接收一个网址返回的一个类的集合的XML
    Mac 查看Volumes
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/10680648.html
Copyright © 2011-2022 走看看