-
for、foreach、stream 哪家的效率更高,你真的用对了吗?
比较for循环、foreach循环及Stream方法效率
for循环
首先,10000数据的for循环,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class ForTest { public static void main(String[] args) { Long startTime = System.currentTimeMillis(); formMethod(); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(){ for ( int i = 0 ; i < 10000 ; i++) { System.out.println( "__________for循环____________" ); } } } |
测试结果:
运行多次,时间基本落在100内,90左右。
foreach循环
同样数据量,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ForTest { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for ( int i = 0 ; i < 10000 ; i++) { lists.add(i); } Long startTime = System.currentTimeMillis(); formMethod(lists); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(List<Integer> lists){ lists.forEach(i->{ System.out.println( "__________forEach____________" ); }); } } |
测试结果:
运行多次,时间基本落在150左右。额,这个增强型效果不如for循环~
Stream
同样数据量,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ForTest { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for ( int i = 0 ; i < 10000 ; i++) { lists.add(i); } Long startTime = System.currentTimeMillis(); formMethod(lists); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(List<Integer> lists){ lists.stream().forEach(i->{ System.out.println( "__________stream处理____________" ); }); } } |
测试结果:
基本和增强型for循环效率差别不大。
得出结论:
★
1万以内的数据,for循环的性能要高于foreach和stream;
”
昨天那位同学说的没毛病!!!
数据加到1000万,代码不变,看结果:
for循环
时间落在43240附近。
foreach循环
基本和for循环效率差别不大。
Stream
基本和for循环,增强型for循环效率差别不大。
比较for循环、foreach循环及Stream方法效率
for循环
首先,10000数据的for循环,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class ForTest { public static void main(String[] args) { Long startTime = System.currentTimeMillis(); formMethod(); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(){ for ( int i = 0 ; i < 10000 ; i++) { System.out.println( "__________for循环____________" ); } } } |
测试结果:
运行多次,时间基本落在100内,90左右。
foreach循环
同样数据量,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ForTest { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for ( int i = 0 ; i < 10000 ; i++) { lists.add(i); } Long startTime = System.currentTimeMillis(); formMethod(lists); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(List<Integer> lists){ lists.forEach(i->{ System.out.println( "__________forEach____________" ); }); } } |
测试结果:
运行多次,时间基本落在150左右。额,这个增强型效果不如for循环~
Stream
同样数据量,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ForTest { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for ( int i = 0 ; i < 10000 ; i++) { lists.add(i); } Long startTime = System.currentTimeMillis(); formMethod(lists); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(List<Integer> lists){ lists.stream().forEach(i->{ System.out.println( "__________stream处理____________" ); }); } } |
测试结果:
基本和增强型for循环效率差别不大。
得出结论:
★
1万以内的数据,for循环的性能要高于foreach和stream;
”
昨天那位同学说的没毛病!!!
数据加到1000万,代码不变,看结果:
for循环
时间落在43240附近。
foreach循环
基本和for循环效率差别不大。
Stream
基本和for循环,增强型for循环效率差别不大。
比较for循环、foreach循环及Stream方法效率
for循环
首先,10000数据的for循环,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class ForTest { public static void main(String[] args) { Long startTime = System.currentTimeMillis(); formMethod(); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(){ for ( int i = 0 ; i < 10000 ; i++) { System.out.println( "__________for循环____________" ); } } } |
测试结果:
运行多次,时间基本落在100内,90左右。
foreach循环
同样数据量,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ForTest { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for ( int i = 0 ; i < 10000 ; i++) { lists.add(i); } Long startTime = System.currentTimeMillis(); formMethod(lists); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(List<Integer> lists){ lists.forEach(i->{ System.out.println( "__________forEach____________" ); }); } } |
测试结果:
运行多次,时间基本落在150左右。额,这个增强型效果不如for循环~
Stream
同样数据量,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ForTest { public static void main(String[] args) { List<Integer> lists = new ArrayList<>(); for ( int i = 0 ; i < 10000 ; i++) { lists.add(i); } Long startTime = System.currentTimeMillis(); formMethod(lists); Long endTime = System.currentTimeMillis(); System.out.println( "time_total:" + (endTime - startTime)); } public static void formMethod(List<Integer> lists){ lists.stream().forEach(i->{ System.out.println( "__________stream处理____________" ); }); } } |
测试结果:
基本和增强型for循环效率差别不大。
得出结论:
★
1万以内的数据,for循环的性能要高于foreach和stream;
”
昨天那位同学说的没毛病!!!
数据加到1000万,代码不变,看结果:
for循环
时间落在43240附近。
foreach循环
基本和for循环效率差别不大。
Stream
基本和for循环,增强型for循环效率差别不大。
原文:https://www.cnblogs.com/javazhiyin/p/14803842.html