java流式api,Java 8 中流式API性能基准测试
测试代码
package hello.test;
import org.openjdk.jmh.annotations.*;
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;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Thread)
public class BenchmarkTest {
public static final String[] BRAND_ARRAY = {"iphone", "huawei", "xiaomi", "samsung", "vivo", "bbk", "oppo", "meizu", "sony", "xperia", "htc", "oneplus", "smartisan", "lenovo", "gionee", "nubia", "letv", "vertu"};
private static final String bidRequestModel = "oneplus";
@Benchmark
public static String findBidrequstBrandByStream() {
final String lowBidRequestModel = bidRequestModel.toLowerCase();
return Arrays.stream(BRAND_ARRAY).filter(x -> lowBidRequestModel.contains(x)).findAny().get();
}
@Benchmark
public static String findBidrequstBrandByParallelStream() {
final String lowBidRequestModel = bidRequestModel.toLowerCase();
return Arrays.stream(BRAND_ARRAY).parallel().filter(x -> lowBidRequestModel.contains(x)).findAny().get();
}
@Benchmark
public static String findBidrequstBrandByArray() {
final String lowBidRequestModel = bidRequestModel.toLowerCase();
for (String e : BRAND_ARRAY) {
if (lowBidRequestModel.contains(e)) {
return e;
}
}
return "";
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(BenchmarkTest.class.getSimpleName())
.forks(1)
.warmupIterations(5)
.measurementIterations(5)
.build();
new Runner(opt).run();
}
}
结果
Benchmark Mode Cnt Score Error Units
BenchmarkTest.findBidrequstBrandByArray thrpt 5 11206.177 ± 1438.816 ops/ms
BenchmarkTest.findBidrequstBrandByParallelStream thrpt 5 206.097 ± 95.776 ops/ms
BenchmarkTest.findBidrequstBrandByStream thrpt 5 4838.695 ± 368.454 ops/ms
总结
对性能敏感的程序, 建议还是用回传统的for循环
并行流并不一定会比顺序流快
java 8 的流式api, 一般情况下比不上传统的 for 循环
java流式api,Java 8 中流式API性能基准测试相关推荐
- java流与文件——java生成解压缩文件(夹)
[0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...
- Java 8 的 JVM 有多快?Fork-Join 性能基准测试
2019独角兽企业重金招聘Python工程师标准>>> Java 8 已经发布一段时间了,许多开发者已经开始使用 Java 8.本文也将讨论最新发布在 JDK 中的并发功能更新.事实 ...
- java 8流在另一个流_Java 8流– Java流
java 8流在另一个流 Welcome to Java 8 Stream API tutorial. In the last few java 8 posts, we looked into Jav ...
- java流式传输对象_使用Java 8在地图上流式传输
java流式传输对象 在本文中,我将向您展示如何在标准Java映射上有效地实现Speedment Open Source流,并将Stream接口扩展为MapStream! 即使在复杂的情况下,此添加将 ...
- java流式计算学习笔记
Java Stream流式计算:Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream API可以极大提高Java程序员的生产力,让程序员写出高效率 ...
- java流式接口,JAVA流式计算
JAVA流式计算 流的简单介绍 Java 8 中,引入了流(Stream)的概念,利用提供的Stream API,我们可以方便的操作集合数据,这种方式很类似于使用SQL对数据库的操作. 如何生成流 利 ...
- Java流式编程stream
文章目录 一.简介 二.创建Stream 三.常用操作 四.其他操作 一.简介 流式 API 从 Java8 开始引入,支持链式书写. 流只能消费一次,不能被两次消费(两次最终操作) 流在管道中流通, ...
- java 流计算_JAVA流式计算
JAVA流式计算 流的简单介绍 Java 8 中,引入了流(Stream)的概念,利用提供的Stream API,我们可以方便的操作集合数据,这种方式很类似于使用SQL对数据库的操作. 如何生成流 利 ...
- gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例
场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...
最新文章
- Golang mysql数据库
- 架构师速成-架构目标之可用性
- RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题
- oracle转64编码,[转]将oracle数据库的编码变成utf-8
- 插入函数c语言,线性表的插入函数
- PHPWeb开发入门体验学习笔记
- c++ sleep函数_C ++ strcpy()和strncpy()函数
- C++笔记------static 和 const 在类中用法
- 拓端tecdat|R语言中使用RCPP并行计算指数加权波动率
- MYSQL SHOW VARIABLES简介
- 使用NSSM配置守护进程 Nginx(Windows)
- NPT、PT、G 、ZG、RC、M几种螺纹的区别
- 游戏测试基础:适配性测试
- 推荐系统之从石器时代到青铜时代的演进史
- linux系统中鼠标键盘失灵,电脑键盘失灵的原因以及解决技巧
- 信息安全工程师学习笔记《第三章》
- Android 自定义View java.lang.RuntimeException: Unable to start activity ComponentInfo
- 电脑远程桌面连接不上应该如何解决
- iPhone 6 被盗记录二【写在315前夕:苹果售后福州直信创邺在没有三包的情况下帮小偷翻新、助力小偷换机销赃!无视王法。让人震惊,痛心,憎恨!消费者很受伤很无奈】...
- 用P5 JS绘制二维动画场景——静态篇
热门文章
- ImportError: No module named ‘pandas.io.data‘
- oracle中视图窗粉色的,Oracle 11g日常操作与维护手册
- 封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>
- iphone6s发布会_iPhone 6S/SE升级iOS 13性能测试:App启动速度比iOS 12.4.1慢
- 怎么查看ip地址下的php文件夹,pe下查看原系统ip的方法
- php for 脚本,php for循环脚本。
- 投篮c语言程序设计,教师招聘笔试体育之篮球必做20题(一)
- 让IE浏览器提示下载或直接打开word文档
- Vue里引入three.js
- JS中的prototype、__proto__与constructor,原型和原型链