文档章节

JAVA微基准测试JMH

贲大侠
 贲大侠
发布于 2017/05/22 16:17
字数 483
阅读 62
收藏 0

新建maven项目,pom.xml依赖如下:

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

测试类:

package jhm.com.jhm;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
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;

/**
 * <p>
 * 
 * @jira TODO
 * @author 
 * @date 2017年5月22日
 * @see 1.5.0
 * @modified TODO
 */
public class JMHSample_01_HelloWorld {
	@Benchmark
	public void wellHelloThere() {
		// this method was intentionally left blank.
	}

	public static void main(String[] args) throws RunnerException {
		Options opt = new OptionsBuilder()
        .include(JMHSample_01_HelloWorld.class.getSimpleName())
        .forks(1)
        .build();

		new Runner(opt).run();
	}
}

测试结果:

# JMH 1.9 (released 766 days ago, please consider updating!)
# VM invoker: C:\Program Files\Java\jdk1.8.0_111\jre\bin\java.exe
# VM options: -Dfile.encoding=UTF-8
# Warmup: 20 iterations, 1 s each
# Measurement: 20 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Throughput, ops/time
# Benchmark: jhm.com.jhm.JMHSample_01_HelloWorld.wellHelloThere

# Run progress: 0.00% complete, ETA 00:00:40
# Fork: 1 of 1
# Warmup Iteration   1: 2084896422.515 ops/s
# Warmup Iteration   2: 2251645960.985 ops/s
# Warmup Iteration   3: 2362642233.069 ops/s
# Warmup Iteration   4: 2401799226.927 ops/s
# Warmup Iteration   5: 2395989311.237 ops/s
# Warmup Iteration   6: 2386200808.994 ops/s
# Warmup Iteration   7: 2129856738.938 ops/s
# Warmup Iteration   8: 2312072531.023 ops/s
# Warmup Iteration   9: 2126101325.950 ops/s
# Warmup Iteration  10: 2370282476.037 ops/s
# Warmup Iteration  11: 2143002395.145 ops/s
# Warmup Iteration  12: 2204656260.418 ops/s
# Warmup Iteration  13: 2134209561.215 ops/s
# Warmup Iteration  14: 2341071610.923 ops/s
# Warmup Iteration  15: 2217064505.460 ops/s
# Warmup Iteration  16: 2279777995.511 ops/s
# Warmup Iteration  17: 2183614908.605 ops/s
# Warmup Iteration  18: 2299563501.195 ops/s
# Warmup Iteration  19: 2290524608.078 ops/s
# Warmup Iteration  20: 2243031591.532 ops/s
Iteration   1: 2387979920.411 ops/s
Iteration   2: 2363528704.495 ops/s
Iteration   3: 2245081315.850 ops/s
Iteration   4: 2418557821.334 ops/s
Iteration   5: 2336329107.999 ops/s
Iteration   6: 2402585146.725 ops/s
Iteration   7: 2321791064.726 ops/s
Iteration   8: 2076359692.148 ops/s
Iteration   9: 2183751771.778 ops/s
Iteration  10: 1826287659.946 ops/s
Iteration  11: 2312766656.614 ops/s
Iteration  12: 2432923040.017 ops/s
Iteration  13: 2379278402.668 ops/s
Iteration  14: 2431028092.218 ops/s
Iteration  15: 2394540614.409 ops/s
Iteration  16: 2311244243.970 ops/s
Iteration  17: 2219567731.203 ops/s
Iteration  18: 2401758172.486 ops/s
Iteration  19: 2212017829.676 ops/s
Iteration  20: 2385428163.704 ops/s


Result "wellHelloThere":
  2302140257.619 ±(99.9%) 127749075.205 ops/s [Average]
  (min, avg, max) = (1826287659.946, 2302140257.619, 2432923040.017), stdev = 147116024.986
  CI (99.9%): [2174391182.414, 2429889332.824] (assumes normal distribution)


# Run complete. Total time: 00:00:40

Benchmark                                Mode  Cnt           Score           Error  Units
JMHSample_01_HelloWorld.wellHelloThere  thrpt   20  2302140257.619 ± 127749075.205  ops/s

测试清单

© 著作权归作者所有

上一篇: 双端队列
贲大侠
粉丝 1
博文 21
码字总数 19667
作品 0
海淀
程序员
私信 提问
使用 JMH 做 Kotlin 的基准测试

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

fengzhizi715
2018/12/13
0
0
验证ArrayList插入同样数据使用指定容量和默认容量的效率

验证ArrayList插入同样数据使用指定容量和默认容量的效率 之前在研究ArrayList源码的时候看到过一篇文章Java 8 容器源码-ArrayList里面说当ArrayList在进行插入的时候,如果容量不够那么就会...

不学无数的程序员
03/06
0
0
Java 12 将于3月19日发布,8 个最终 JEP 一览

JDK 12 已于2018年12月进入 Rampdown Phase One 阶段,这意味着该版本所有新的功能特性被冻结,不会再加入更多的 JEP 。该阶段将持续一个月,主要修复 P1-P3 级错误。JDK 12 定于2019年3月1...

王练
01/08
0
0
Java 虚拟机 OpenJ9 和 Hotspot 的 Benchmark 测试

IBM 开源了它开发的 J9 Java 虚拟机 (JVM),并将其贡献给了 Eclipse 基金会,重命名为 Eclipse OpenJ9。J9 是一个高性能可伸缩的 Java 虚拟机,是许多 IBM 企业级软件产品的核心,OpenJ9 可作...

局长
2017/09/19
2.7K
21
即将改变软件开发的5个Java 9新特性

预计发布的Java 9中,最令人兴奋的特性是什么? 有关Java9的消息最近显得有些沉寂,不要被它迷惑了。JDK开发者正在努力朝着下一个版本迈进,计划2015年12月前完成所有功能开发。之后,它会经...

oschina
2015/07/22
14.7K
59

没有更多内容

加载失败,请刷新页面

加载更多

读书replay《maven实战》.1.20190526

前情提要 maven这个工具用了好久了,但是一直都用的迷迷糊糊的,没有对它进行过系统性的学习,只是知道一些常用的功能怎么实现,所以20190516这一天我从JD购买了徐晓斌老师所著的《maven实战...

wanxiangming
43分钟前
0
0
真实项目案例实战——【状态设计模式】使用场景

什么是状态模式 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。 状态模式应用场景 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根...

须臾之余
50分钟前
1
0
Java 实现把字符串转换成整数【底层实现】

https://blog.csdn.net/zl18310999566/article/details/80263396

qimh
53分钟前
1
0
IDEA的debugger

1、win下节省内存空间 3、条件断点

一只小青蛙
今天
3
0
炸!亿级数据DB秒级平滑扩容

一步一步,娓娓道来。 一般来说,并发量大,吞吐量大的互联网分层架构是怎么样的? 数据库上层都有一个微服务,服务层记录“业务库”与“数据库实例配置”的映射关系,通过数据库连接池向数据...

编程SHA
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部