Java微基准测试框架JMH的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21845263/article/details/81911946

查了下JMH的使用,很多博客都要搞得好复杂,我这个步骤挺简单的
使用Intellij IDEA2018.2 作为集成开发环境,JMH版本为1.21
注意建项目时一定要建立一个maven项目,直接导入jmh-core,jmh-generator-annprocess这两个jar没用,完整的依赖如下:**
maven依赖

<dependencies>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>1.21</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>1.21</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

仅仅这个还不足以运行,在Setting->Build,ExecutionDeployment->Compiler->Annotation Processors里开启Enable annotation processing 后即可运行JMH测试了.
IDEA设置

建立一个如下的工程,即可运行
工程
代码如下:

package first;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

import java.util.HashMap;
import java.util.Map;

public class Hello {
    @Benchmark
    public void testMethod() {
        Map<String, String> map = new HashMap<>();
        map.put("a", "b");
    }

    public static void main(String[] args) {
        final Options build = new OptionsBuilder().include(Hello.class.getSimpleName()).forks(1).build();
        try {
            new Runner(build).run();
        } catch (RunnerException e) {
            e.printStackTrace();
        }
    }
}

欢迎查看我的Github:https://github.com/Vant1032

猜你喜欢

转载自blog.csdn.net/qq_21845263/article/details/81911946