JMH之程序常用的采样方式
时间:2020-04-11
本文章向大家介绍JMH之程序常用的采样方式,主要包括JMH之程序常用的采样方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、吞吐量测量方式
/**
* 程序吞吐量测量方式
*/
public class Test_JMH02 {
@Benchmark
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.SECONDS)
public void measureThroughput() throws InterruptedException {
//程序在此处进行休眠10秒
Thread.sleep(10000);
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder().include(Test_JMH02.class.getSimpleName())
.forks(1).build();
new Runner(opt).run();
}
}
测试结果
Benchmark Mode Cnt Score Error Units
Test_JMH02.measureThroughput thrpt 5 0.100 ± 0.001 ops/s
表示每秒可以进行0.1个操作
二、测试方法的平均执行时间
/**
* 统计方法的平均执行时间
*/
public class Test_JMH03 {
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public void measureAverageTime() throws InterruptedException {
Thread.sleep(100);
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder().include(Test_JMH03.class.getSimpleName())
.forks(1).build();
new Runner(opt).run();
}
}
测试结果
Benchmark Mode Cnt Score Error Units
Test_JMH03.measureAverageTime avgt 5 100494.779 ± 240.881 us/op
每次执行大约需要100毫秒
三、采样
/**
* 采样,得到方法的部分执行时间
*/
public class Test_JMH04 {
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public void measureSampleTime() throws InterruptedException {
Thread.sleep(1000);
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder().include(Test_JMH04.class.getSimpleName())
.forks(1).build();
new Runner(opt).run();
}
}
测试结果
Benchmark Mode Cnt Score Error Units
Test_JMH04.measureSampleTime sample 50 999670.415 ± 272.664 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.00 sample 998244.352 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.50 sample 999292.928 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.90 sample 1000341.504 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.95 sample 1000341.504 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.99 sample 1000341.504 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.999 sample 1000341.504 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p0.9999 sample 1000341.504 us/op
Test_JMH04.measureSampleTime:measureSampleTime·p1.00 sample 1000341.504 us/op
结果表明,平均执行时间是999670 us,有一半的调用在999292 us内完成,90%的调用在1000341 us内完成,全部的采样在1000341 us内完成。
原文地址:https://www.cnblogs.com/beanbag/p/12679318.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- FTP文件管理项目(本地云)项目日报(九)
- 【Linux】血泪教训 -- 动态链接库配置方法
- FTP文件管理项目(本地云)项目日报(八)
- FTP文件管理项目(本地云)项目日报(七)
- FTP文件管理项目(本地云)项目日报(六)
- Transformers Assemble(PART I)
- FTP文件管理项目(本地云)项目日报(五)
- 几个Python“小伎俩”
- FTP文件管理项目(本地云)项目日报(四)
- BERT源码分析(PART I)
- FTP文件管理项目(本地云)项目日报(二)
- FTP文件管理项目(本地云)项目日报(一)
- 【奇技淫巧】-- 朋友圈(并查集)
- 【奇技淫巧】-- 岛屿的最大面积
- LeetCode精选好题(三)