测试代码

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性能基准测试相关推荐

  1. java流与文件——java生成解压缩文件(夹)

    [0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...

  2. Java 8 的 JVM 有多快?Fork-Join 性能基准测试

    2019独角兽企业重金招聘Python工程师标准>>> Java 8 已经发布一段时间了,许多开发者已经开始使用 Java 8.本文也将讨论最新发布在 JDK 中的并发功能更新.事实 ...

  3. 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 ...

  4. java流式传输对象_使用Java 8在地图上流式传输

    java流式传输对象 在本文中,我将向您展示如何在标准Java映射上有效地实现Speedment Open Source流,并将Stream接口扩展为MapStream! 即使在复杂的情况下,此添加将 ...

  5. java流式计算学习笔记

    Java Stream流式计算:Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream API可以极大提高Java程序员的生产力,让程序员写出高效率 ...

  6. java流式接口,JAVA流式计算

    JAVA流式计算 流的简单介绍 Java 8 中,引入了流(Stream)的概念,利用提供的Stream API,我们可以方便的操作集合数据,这种方式很类似于使用SQL对数据库的操作. 如何生成流 利 ...

  7. Java流式编程stream

    文章目录 一.简介 二.创建Stream 三.常用操作 四.其他操作 一.简介 流式 API 从 Java8 开始引入,支持链式书写. 流只能消费一次,不能被两次消费(两次最终操作) 流在管道中流通, ...

  8. java 流计算_JAVA流式计算

    JAVA流式计算 流的简单介绍 Java 8 中,引入了流(Stream)的概念,利用提供的Stream API,我们可以方便的操作集合数据,这种方式很类似于使用SQL对数据库的操作. 如何生成流 利 ...

  9. gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例

    场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...

最新文章

  1. Golang mysql数据库
  2. 架构师速成-架构目标之可用性
  3. RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题
  4. oracle转64编码,[转]将oracle数据库的编码变成utf-8
  5. 插入函数c语言,线性表的插入函数
  6. PHPWeb开发入门体验学习笔记
  7. c++ sleep函数_C ++ strcpy()和strncpy()函数
  8. C++笔记------static 和 const 在类中用法
  9. 拓端tecdat|R语言中使用RCPP并行计算指数加权波动率
  10. MYSQL SHOW VARIABLES简介
  11. 使用NSSM配置守护进程 Nginx(Windows)
  12. NPT、PT、G 、ZG、RC、M几种螺纹的区别
  13. 游戏测试基础:适配性测试
  14. 推荐系统之从石器时代到青铜时代的演进史
  15. linux系统中鼠标键盘失灵,电脑键盘失灵的原因以及解决技巧
  16. 信息安全工程师学习笔记《第三章》
  17. Android 自定义View java.lang.RuntimeException: Unable to start activity ComponentInfo
  18. 电脑远程桌面连接不上应该如何解决
  19. iPhone 6 被盗记录二【写在315前夕:苹果售后福州直信创邺在没有三包的情况下帮小偷翻新、助力小偷换机销赃!无视王法。让人震惊,痛心,憎恨!消费者很受伤很无奈】...
  20. 用P5 JS绘制二维动画场景——静态篇

热门文章

  1. ImportError: No module named ‘pandas.io.data‘
  2. oracle中视图窗粉色的,Oracle 11g日常操作与维护手册
  3. 封装自定义的redis切库工具类ByteArrayRedisTemplate,读取byte数组反序列化成List<Object>
  4. iphone6s发布会_iPhone 6S/SE升级iOS 13性能测试:App启动速度比iOS 12.4.1慢
  5. 怎么查看ip地址下的php文件夹,pe下查看原系统ip的方法
  6. php for 脚本,php for循环脚本。
  7. 投篮c语言程序设计,教师招聘笔试体育之篮球必做20题(一)
  8. 让IE浏览器提示下载或直接打开word文档
  9. Vue里引入three.js
  10. JS中的prototype、__proto__与constructor,原型和原型链