首页 > 其他 > 详细

性能测试JMH

时间:2020-10-10 18:29:55      阅读:51      评论:0      收藏:0      [点我收藏+]

生成视图的网站(在跑性能测试时指定生成json格式的结果,再上传到此网站可视化):http://deepoove.com/jmh-visual-chart/

参考文档

  1. https://www.xncoding.com/2018/01/07/java/jmh.html

实战

  1. 添加pom依赖
        <!-- JMH-->
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>1.25.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>1.25.2</version>
            <scope>provided</scope>
        </dependency>
  1. 增加性能测试类,在需要做性能测试的方法上添加@Benchnmark注解
    场景:验证字符串拼接的性能差异
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 3)
@Measurement(iterations = 10, time = 5, timeUnit = TimeUnit.SECONDS)
@Threads(8)
@Fork(2)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public class StringBuilderBenchmark {

        @Benchmark
        public void testStringAdd() {
            String a = "";
            for (int i = 0; i < 10; i++) {
                a += i;
            }
            print(a);
        }

        @Benchmark
        public void testStringBuilderAdd() {
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < 10; i++) {
                stringBuilder.append(i);
            }
            print(stringBuilder.toString());
        }

        private void print(String a) {
        }

        // 生成json格式的结果,默认是生成log格式的
        public static void main(String []args) throws RunnerException {
            org.openjdk.jmh.runner.options.Options options = new OptionsBuilder()
                    .include(StringBuilderBenchmark.class.getSimpleName())
                    .shouldDoGC(true)
                    .resultFormat(ResultFormatType.JSON)
                    .result("benchmark-result.json")
                    .addProfiler(StackProfiler.class)
                    .jvmArgsAppend("-Djmh.stack.period=1")
                    .warmupIterations(5)
                    .measurementIterations(5)
                    .forks(1)
                    .build();
            new Runner(options).run();
        }
}

性能测试JMH

原文:https://www.cnblogs.com/lin-/p/13794051.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!