java8stream和foreach哪个效率高(老程序员告诉你)

  java8 stream和foreach哪个效率高?说下我的结论:150W条数据以上:stream>paralleStream>simple;150W条数据以下:simple>stream>paralleStream。从性能上考虑:小数据量用普通的forEach就可以,没有必要使用java8中的新出来的几种,已经在项目中使用的也不需要改回来,10W条也就几毫秒的差距。

java8stream和foreach哪个效率高

  2.测试用例

  import java.util.ArrayList;

  import java.util.List;

  public class ForEachMain {

  public static void main(String[] args) {

  // 实例化arrayList

  List arrayList = new ArrayList();

  int num = 15000000;

  // 插入10万条数据

  for (int i = 0; i < num; i++) {

  arrayList.add(i);

  }

  List res = new ArrayList<>();

  res.clear();

  // 用foreach循环arrayList

  long arrayForeachStartTime = System.currentTimeMillis();

  for (Integer in : arrayList) {

  res.add(in);

  }

  long arrayForeachEndTime = System.currentTimeMillis();

  System.out.println(

  ”用foreach循环arrayList ” + (num) + “次花费时间:” + (arrayForeachEndTime – arrayForeachStartTime) + “毫秒”);

  res.clear();

  // 用stream-foreach循环arrayList

  long arrayStreamStartTime = System.currentTimeMillis();

  arrayList.stream().forEach(e -> res.add(e));

java8stream和foreach哪个效率高

  long arrayStreamEndTime = System.currentTimeMillis();

  System.out.println(

  ”用Stream-foreach循环arrayList ” + (num) + “次花费时间:” + (arrayStreamEndTime – arrayStreamStartTime) + “毫秒”);

  res.clear();

  // 用parallelStream-foreach循环arrayList

  long arrayParallelStreamStartTime = System.currentTimeMillis();

  arrayList.parallelStream().forEach(e -> res.add(e));

  long arrayParallelStreamEndTime = System.currentTimeMillis();

  System.out.println(“用parallelStream-foreach循环arrayList ” + (num) + “万次花费时间:”

  + (

  arrayParallelStreamEndTime – arrayParallelStreamStartTime) + “毫秒”);

  }

  }

  2.1 当num = 50000000时

  用foreach循环arrayList 5000万次花费时间:2840毫秒

  用stream-foreach循环arrayList 5000万次花费时间:507毫秒

  用parallelStream-foreach循环arrayList 5000万次花费时间:1168毫秒

  2.2 当num = 500000时

  用foreach循环arrayList 50万次花费时间:13毫秒

  用stream-foreach循环arrayList 50万次花费时间:25毫秒

  用parallelStream-foreach循环arrayList 50万次花费时间:35毫秒

  2.3 当num = 5000时

  用foreach循环arrayList 5000次花费时间:1毫秒

  用stream-foreach循环arrayList 0万次花费时间:16毫秒

  用parallelStream-foreach循环arrayList 0万次花费时间:8毫秒

  最直观的感觉,stream的流式处理应该比较快,这种想当然的推测,需要事实去佐证,运行过测试代码之后,发现并不是那么回事。耳听为虚,眼见为实,李子是不是涩的,最简单的方式是尝一口。请记住,编写代码时,一定要以最简洁为原则,毕竟运行程序的硬件成本会随着时间的推移在不断降低。

java8stream和foreach哪个效率高

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
不要怕,这儿没有熟人,高低整两句吧
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容