2016 - 2024

感恩一路有你

在java中哪些是标准流 java8 stream和foreach哪个效率高?

浏览量:1192 时间:2023-04-22 16:47:06 作者:采采

java8 stream和foreach哪个效率高?

1. 问题描述

java8 stream和foreach哪个效率高?

问题结论

150W条数据以上:streamgtparalleStreamgtsimple

150W条数据以下:simplegtstreamgtparalleStream

从性能上考虑:小数据量用普通的forEach就可以,没有必要使用java8中的新出来的几种,已经在项目中使用的也不需要改回来,10W条也就几毫秒的差距。

2. 测试用例

import

import

public class ForEachMain {

public static void main(String[] args) {

// 实例化arrayList

ListltIntegergt arrayList new ArrayListltIntegergt()

int num 15000000

// 插入10万条数据

for (int i 0 i lt num i ) {

(i)

}

ListltIntegergt res new ArrayListltgt()

()

// 用foreach循环arrayList

long arrayForeachStartTime ()

for (Integer in : arrayList) {

(in)

}

long arrayForeachEndTime ()

(

用foreach循环arrayList (num) 次花费时间: (arrayForeachEndTime - arrayForeachStartTime) 毫秒)

()

// 用stream-foreach循环arrayList

long arrayStreamStartTime ()

().forEach(e -gt (e))

long arrayStreamEndTime ()

(

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

()

// 用parallelStream-foreach循环arrayList

long arrayParallelStreamStartTime ()

().forEach(e -gt (e))

long arrayParallelStreamEndTime ()

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

作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。

java中什么类需要序列化?

为了读写方便,比如把一个对象写入文本中,必须进行序列化。

java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的

数据 foreach 时间 对象 序列化

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。