首页 >

java8stream和foreach哪个效率高? – 网络|

ps怎么把图层置于顶层,spring怎么读,怎么注册香港域名java8stream和foreach哪个效率高? - 网络|java8stream和foreach哪个效率高

java8stream和foreach哪个效率高?

问题结论

150W条数据以上:stream>paralleStream>simple

150W条数据以下:simple>stream>paralleStream

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

2.测试用例

importjava.util.ArrayList;

importjava.util.List;

publicclassForEachMain{

publicstaticvoidmain(String[]args){

//实例化arrayList

List<Integer>arrayList=newArrayList<Integer>();

intnum=15000000;

//插入10万条数据

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

arrayList.add(i);

}

List<Integer>res=newArrayList<>();

res.clear();

//用foreach循环arrayList

longarrayForeachStartTime=System.currentTimeMillis();

for(Integerin:arrayList){

res.add(in);

}

longarrayForeachEndTime=System.currentTimeMillis();

System.out.println(

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

res.clear();

//用stream-foreach循环arrayList

longarrayStreamStartTime=System.currentTimeMillis();

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

longarrayStreamEndTime=System.currentTimeMillis();

System.out.println(

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

res.clear();

//用parallelStream-foreach循环arrayList

longarrayParallelStreamStartTime=System.currentTimeMillis();

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

longarrayParallelStreamEndTime=System.currentTimeMillis();

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

+(arrayParallelStreamEndTime-arrayParallelStreamStartTime)+”毫秒”);

}

}

2.1当num=50000000时

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

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

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

2.2当num=500000时

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

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

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

2.3当num=5000时

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

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

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

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

作者:夕阳雨晴,偶的:偶尔美文,主流Java,为你讲述不一样的码农生活。


java8stream和foreach哪个效率高? - 网络|
  • 作为程序员,你有过一个简单bug查询了很久才解决的经历吗? - 网络|
  • 作为程序员,你有过一个简单bug查询了很久才解决的经历吗? - 网络| | 作为程序员,你有过一个简单bug查询了很久才解决的经历吗? - 网络| ...

    java8stream和foreach哪个效率高? - 网络|
  • 为什么程序员都喜欢安静? - 网络|
  • 为什么程序员都喜欢安静? - 网络| | 为什么程序员都喜欢安静? - 网络| ...

    java8stream和foreach哪个效率高? - 网络|
  • 写代码一遍就成功是怎么一种体验? - 网络|
  • 写代码一遍就成功是怎么一种体验? - 网络| | 写代码一遍就成功是怎么一种体验? - 网络| ...