java 8 stream 性能_java8中parallelStream性能测试及结果分析
测试1
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 3, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 20, time = 3, timeUnit = TimeUnit.SECONDS)
@Fork(1)
@State(Scope.Benchmark)
public class StreamBenchTest {
List data = new ArrayList<>();
@Setup
public void init() {
// prepare
for(int i=0;i<100;i++){
data.add(UUID.randomUUID().toString());
}
}
@TearDown
public void destory() {
// destory
}
@Benchmark
public void benchStream(){
data.stream().forEach(e -> {
e.getBytes();
try {
Thread.sleep(10);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
});
}
@Benchmark
public void benchParallelStream(){
data.parallelStream().forEach(e -> {
e.getBytes();
try {
Thread.sleep(10);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
});
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(".*" +StreamBenchTest.class.getSimpleName()+ ".*")
.forks(1)
.build();
new Runner(opt).run();
}
}
parallelStream线程数
默认是Runtime.getRuntime().availableProcessors() - 1,这里为7
运行结果
# Run complete. Total time: 00:02:44
Benchmark Mode Cnt Score Error Units
StreamBenchTest.benchParallelStream avgt 20 155868805.437 ± 1509175.840 ns/op
StreamBenchTest.benchStream avgt 20 1147570372.950 ± 6138494.414 ns/op
测试2
将数据data改为30,同时sleep改为100
Benchmark Mode Cnt Score Error Units
StreamBenchTest.benchParallelStream avgt 20 414230854.631 ± 725294.455 ns/op
StreamBenchTest.benchStream avgt 20 3107250608.500 ± 4805037.628 ns/op
可以发现sleep越长,parallelStream优势越明显。
小结
parallelStream在阻塞场景下优势更明显,其线程池个数默认为
Runtime.getRuntime().availableProcessors() - 1,如果需修改则需设置-Djava.util.concurrent.ForkJoinPool.common.parallelism=8
以上就是本次讲述知识点的全部内容,感谢你对脚本之家的支持。
java 8 stream 性能_java8中parallelStream性能测试及结果分析相关推荐
- java8 stream遍历_Java8中用法优雅的 Stream,性能也优雅吗?
Java8的Stream API可以极大提高Java程序员的生产力,让程序员写出高效率.干净.简洁的代码.那么,Stream API的性能到底如何呢,代码整洁的背后是否意味着性能的损耗呢?本文对Str ...
- 用Java实现Stream流处理中的滑窗
2019独角兽企业重金招聘Python工程师标准>>> 简单地说,滑窗算法是一种移动固定大小的窗口(子列表)来遍历数据结构的方法,主要是基于固定步骤的序列流数据. 如果我们想通过使用 ...
- java 8 stream入门_java8 Stream 流快速入门
Stream 流 简介 Java 8 中,得益于 lambda 带来的函数式编程,引入了一个全新的 Stream流 概念,用于解决集合已有的弊端. 好处 我们先来看一个例子: 筛选出 names 中以 ...
- java 月份适配计算_Java8中的时间日期API这么好用,你居然还没有掌握?
工作这么久了,对于Java中时间日期的操作一直很蛋疼,一会用Date,一会用Calendar或者LocalDateTime,始终没有认真总结过它们的联系与区别.迷迷糊糊用了好几年了,今天终于搞清楚了! ...
- java酷炫代码_Java8 中有趣酷炫的小技巧
执行注释 大多数开发人员认为注释永远不会在程序中执行,并用于帮助代码理解.但是,它们却可以被执行: public class Main { public static void main(String ...
- java equals equalsignorecase 性能_Java中equals()与equalsIgnoreCase()之间的区别
equals()在Java中使用以检查两个字符串之间的相等性. equalsIgnoreCase()在Java中使用,以忽略大小写检查两个字符串之间的相等性. 假设以下是我们的两个字符串-String ...
- java equals equalsignorecase 性能_Java中equals()、equalsIgnoreCase()和==的区别
用久了C#,在Java中,判断一个字符串还是习惯性的用了==,但是总是不能按照正确的判断分支运行,后来才想起来Java中是有equals的,然后就有引出了equalsIgnoreCase. 这三种的正 ...
- java equals equalsignorecase 性能_JAVA中字符串比较equals()和equalsIgnoreCase()的区别
JAVA中字符串比较equals()和equalsIgnoreCase()的区别 1.使用equals( )方法比较两个字符串是否相等.它具有如下的一般形式: boolean equals(Objec ...
- java optional详解_java8中Optional的用法详解
package com.lyzx.concurrent.java8; import org.junit.Test; import java.util.Optional; import java.uti ...
最新文章
- Js计算时间差(天、小时、分钟、秒)
- CentOs7安装apache以及遇到的问题
- python字典_Python 字典
- Arctext.js - 基于 CSS3 jQuery 的文本弯曲效果
- string 类简介和例程
- mysql 网吧管理系统设计_网吧管理系统开题报告.doc
- h3c服务器虚拟光驱上传慢,01-正文
- SQL Server 2022 CPT 2.0 下载
- from scipy.misc import comb ImportError: cannot import name ‘comb‘
- 实验4-1-4 求整数的位数及各位数字之和 (15分)(想象成剥洋葱)
- 第一章 数据仓库理论专题
- php 邮件群发功能,php实现邮件群发
- Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad,移动鼠标,鼠标确定等操作)
- 如何实现按键的短按、长按检测?
- java数据类型图:
- 使用Vscode调试vue代码
- 【PC工具】chrome谷歌浏览器各种版本,最好用的浏览器没有之一。低调使用福利...
- [leetcode] 893. Groups of Special-Equivalent Strings
- 很好的英文资料书籍下载网站
- win7 远程桌面操作步骤
热门文章
- 学习ASP.NET Core,你必须了解无处不在的“依赖注入”
- dotnet core开发体验之开始MVC
- java中 有没有方法将浏览器标签栏去掉_用JS去掉IE窗口的标题栏,工具栏,地址栏...
- 计算机应用技术 平面设计,全国信息化计算机应用技术水平教育考试试卷 平面设计师...
- Android OkHttp3简介和使用详解
- Android之如何判断设备是平板还是手机
- 字符串之将整数字符串转成整数值
- github上面如何编辑README
- (五)python3 只需3小时带你轻松入门—— 逻辑运算符
- java barrier_Java并发类CyclicBarrier方法详解