文档章节

使用jmh进行微基准测试

go4it
 go4it
发布于 2017/03/26 22:58
字数 274
阅读 35
收藏 0
jmh

##maven

        <dependency>
			<groupId>org.openjdk.jmh</groupId>
			<artifactId>jmh-core</artifactId>
			<version>1.17.5</version>
		</dependency>
		<dependency>
			<groupId>org.openjdk.jmh</groupId>
			<artifactId>jmh-generator-annprocess</artifactId>
			<version>1.17.5</version>
			<scope>provided</scope>
		</dependency>

##使用

@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5, time = 3, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 20, time = 3, timeUnit = TimeUnit.SECONDS)
@Fork(1)
@State(Scope.Benchmark)
public class DemoJmhTest {

    private String pid;

    @Setup
    public void init() {
       // prepare 
    }
    
    @TearDown
    public void destory() {
       // destory 
    }

    @Benchmark
    public void benchPrecondition(){
        try{
            Preconditions.checkNotNull(pid);
        }catch (Exception e){

        }
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(".*" +DemoJmhTest.class.getSimpleName()+ ".*")
                .forks(1)
                .build();
        new Runner(opt).run();
    }
}

##BenchmarkMode类型 ###Mode.Throughput 在有时限的迭代里头,该方法能被调用多少次   ###Mode.AverageTime 方法平均执行时间   ###Mode.SampleTime 对方法执行时间进行采样计算   ###Mode.SingleShotTime  方法的单次调用时间/一次批处理的总调用时间   ##注意点 从@State对象读取测试输入并返回计算的结果,方便JMH对冗余代码进行消除; 如果是测试方法的性能,则避免通过在方法内循环(重复执行方法内原来代码),这样造成方法方法调用次数的减少,结果不准确,应该把循环调用放在方法外头。

##doc

© 著作权归作者所有

go4it
粉丝 88
博文 1175
码字总数 1099667
作品 0
深圳
私信 提问
Jenkins 插件的微基准测试框架

本文首发于:Jenkins 中文社区 原文链接 作者:abhyudayasharma 译者:Donghui Wang Jenkins 插件的微基准测试框架 本文介绍了 Jenkins 插件的微基准测试框架以及如何在插件中运行基准测试 ...

Jenkins中文社区
07/11
67
0
使用 JMH 做 Kotlin 的基准测试

一. 基准测试 基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。 基准测试是一种测量和评估软件性能指标的活动。你可以...

fengzhizi715
2018/12/13
0
0
使用JMH做Java微基准测试

在使用Java编程过程中,我们对于一些代码调用的细节有多种编写方式,但是不确定它们性能时,往往采用重复多次计数的方式来解决。但是随着JVM不断的进化,随着代码执行次数的增加,JVM会不断的...

weipeng2k
2018/01/04
0
0
如何度量你的程序的性能

Java下如何做基准测试 你是否经常用这样的代码来度量代码性能: 那么,你应该继续往下看. 基准测试面临的问题 仔细阅读 《健壮的 Java 基准测试》 这篇文章,详细介绍了Java基准测试面临的问题,...

彗星麦田圈
2016/12/23
27
0
JMH 的使用及示例

1.JMH的介绍 JMH是新的microbenchmark(微基准测试)框架(2013年首次发布)。与其他众多框架相比它的特色优势在于,它是由Oracle实现JIT的相同人员开发的。特别是我想提一下Aleksey Shipile...

KongFanhao
2016/10/09
671
0

没有更多内容

加载失败,请刷新页面

加载更多

x002-语言元素

变量命令规则 硬性规则: 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。 大小写敏感(大写的a和小写的A是两个不同的变量)。 不要跟关键字(有特殊...

伟大源于勇敢的开始
今天
4
0
nginx反向代理配置

nginx配置文件位置/usr/local/nginx/conf/nginx.conf 配置文件修改: # cd /usr/local/nginx/conf # vim nginx.conf server {listen 80;server_name localhost;#charset k......

行者终成事
今天
5
0
OSChina 周日乱弹 —— 这是假的,和我之前的不一样

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《男孩》-梁博 / 陶孟童 / 肖和东 / 高誉容 《男孩》-梁博 / 陶孟童 / 肖和东 / 高誉容 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
15
1
Rust学习笔记一 数据类型

写在前面 我也不是什么特别厉害的大牛,学历也很低,只是对一些新语言比较感兴趣,接触过的语言不算多也不算少,大部分也都浅尝辄止,所以理解上可能会有一些偏差。 自学了Java、Kotlin、Python、...

MusiCodeXY
今天
5
0
Java 脚本引擎入门

Java Script Engine Java 脚本引擎可以将脚本嵌入Java代码中,可以自定义和扩展Java应用程序,自JDK1.6被引入,基于Rhino引擎,JDK1.8后使用Nashorn引擎,支持ECMAScript 5,但后期还可能会换...

阿提说说
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部