VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • 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循环____________");
        }
    }
}

  

测试结果:

for、foreach、stream 哪家的效率更高,你真的用对了吗?

运行多次,时间基本落在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____________");
        });
    }
}

  

测试结果:

for、foreach、stream 哪家的效率更高,你真的用对了吗?

运行多次,时间基本落在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、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和增强型for循环效率差别不大。

得出结论:

1万以内的数据,for循环的性能要高于foreach和stream;

昨天那位同学说的没毛病!!!

数据加到1000万,代码不变,看结果:

for循环

for、foreach、stream 哪家的效率更高,你真的用对了吗?

时间落在43240附近。

foreach循环

for、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和for循环效率差别不大。

Stream

for、foreach、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循环____________");
        }
    }
}

  

测试结果:

for、foreach、stream 哪家的效率更高,你真的用对了吗?

运行多次,时间基本落在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____________");
        });
    }
}

  

测试结果:

for、foreach、stream 哪家的效率更高,你真的用对了吗?

运行多次,时间基本落在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、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和增强型for循环效率差别不大。

得出结论:

1万以内的数据,for循环的性能要高于foreach和stream;

昨天那位同学说的没毛病!!!

数据加到1000万,代码不变,看结果:

for循环

for、foreach、stream 哪家的效率更高,你真的用对了吗?

时间落在43240附近。

foreach循环

for、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和for循环效率差别不大。

Stream

for、foreach、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循环____________");
        }
    }
}

  

测试结果:

for、foreach、stream 哪家的效率更高,你真的用对了吗?

运行多次,时间基本落在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____________");
        });
    }
}

  

测试结果:

for、foreach、stream 哪家的效率更高,你真的用对了吗?

运行多次,时间基本落在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、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和增强型for循环效率差别不大。

得出结论:

1万以内的数据,for循环的性能要高于foreach和stream;

昨天那位同学说的没毛病!!!

数据加到1000万,代码不变,看结果:

for循环

for、foreach、stream 哪家的效率更高,你真的用对了吗?

时间落在43240附近。

foreach循环

for、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和for循环效率差别不大。

Stream

for、foreach、stream 哪家的效率更高,你真的用对了吗?

基本和for循环,增强型for循环效率差别不大。

 

原文:https://www.cnblogs.com/javazhiyin/p/14803842.html


相关教程