java 循环效率测试

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class forTest {
    public static void main(String[] args)
    {
        for( int t=1;t<5;t++){
            for(int tt=1;tt<=3;tt++){
                List<String> testList = Arrays.asList(new String[(int)Math.pow(100,t)]);
                long t1 = System.currentTimeMillis();
                for(int i=0;i<testList.size();i++){
                    testList.set(i,i+"");
                }
                long t2 = System.currentTimeMillis();
                for(String i:testList){
                    String b = i;
                }
                double t3 = System.currentTimeMillis();
                testList.forEach(String -> {String b = "";});
                double t4 = System.currentTimeMillis();
                testList.stream().forEach(String -> {String b = "";});
                double t5 = System.currentTimeMillis();
                testList.parallelStream().forEach(String -> {String b = "";});
                double t6 = System.currentTimeMillis();
                String b;
                for(Iterator<String> iterator = testList.iterator(); iterator.hasNext(); b = iterator.next());
                long t7 = System.currentTimeMillis();
                System.out.println("x" + tt +": loop size:" + testList.size());
                System.out.println("y" + t + ": classical for loop waste millisecond:"+(t2-t1));
                System.out.println("y" + t + ": classical forEach loop waste millisecond:"+(t3-t2));
                System.out.println("y" + t + ": lambda forEach loop waste millisecond:"+(t4-t3));
                System.out.println("y" + t + ": lambda not parallel stream forEach loop waste millisecond:"+(t5-t4));
                System.out.println("y" + t + ": lambda parallel stream forEach loop waste millisecond:"+(t6-t5));
                System.out.println("y" + t + ": classical iterator loop waste millisecond:"+(t7-t6)+"\n");
            }
        }
    }
}

 


x1: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0.0
y1: lambda forEach loop waste millisecond:32.0
y1: lambda not parallel stream forEach loop waste millisecond:3.0
y1: lambda parallel stream forEach loop waste millisecond:7.0
y1: classical iterator loop waste millisecond:0.0
x2: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0.0
y1: lambda forEach loop waste millisecond:0.0
y1: lambda not parallel stream forEach loop waste millisecond:0.0
y1: lambda parallel stream forEach loop waste millisecond:0.0
y1: classical iterator loop waste millisecond:0.0
x3: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0.0
y1: lambda forEach loop waste millisecond:0.0
y1: lambda not parallel stream forEach loop waste millisecond:0.0
y1: lambda parallel stream forEach loop waste millisecond:0.0
y1: classical iterator loop waste millisecond:1.0
x1: loop size:10000
y2: classical for loop waste millisecond:2
y2: classical forEach loop waste millisecond:1.0
y2: lambda forEach loop waste millisecond:0.0
y2: lambda not parallel stream forEach loop waste millisecond:1.0
y2: lambda parallel stream forEach loop waste millisecond:1.0
y2: classical iterator loop waste millisecond:0.0
x2: loop size:10000
y2: classical for loop waste millisecond:3
y2: classical forEach loop waste millisecond:1.0
y2: lambda forEach loop waste millisecond:0.0
y2: lambda not parallel stream forEach loop waste millisecond:1.0
y2: lambda parallel stream forEach loop waste millisecond:0.0
y2: classical iterator loop waste millisecond:1.0
x3: loop size:10000
y2: classical for loop waste millisecond:2
y2: classical forEach loop waste millisecond:0.0
y2: lambda forEach loop waste millisecond:1.0
y2: lambda not parallel stream forEach loop waste millisecond:0.0
y2: lambda parallel stream forEach loop waste millisecond:0.0
y2: classical iterator loop waste millisecond:0.0
x1: loop size:1000000
y3: classical for loop waste millisecond:59
y3: classical forEach loop waste millisecond:10.0
y3: lambda forEach loop waste millisecond:5.0
y3: lambda not parallel stream forEach loop waste millisecond:5.0
y3: lambda parallel stream forEach loop waste millisecond:4.0
y3: classical iterator loop waste millisecond:12.0
x2: loop size:1000000
y3: classical for loop waste millisecond:62
y3: classical forEach loop waste millisecond:17.0
y3: lambda forEach loop waste millisecond:7.0
y3: lambda not parallel stream forEach loop waste millisecond:5.0
y3: lambda parallel stream forEach loop waste millisecond:3.0
y3: classical iterator loop waste millisecond:6.0
x3: loop size:1000000
y3: classical for loop waste millisecond:37
y3: classical forEach loop waste millisecond:3.0
y3: lambda forEach loop waste millisecond:3.0
y3: lambda not parallel stream forEach loop waste millisecond:4.0
y3: lambda parallel stream forEach loop waste millisecond:2.0
y3: classical iterator loop waste millisecond:3.0
 
posted @ 2019-09-12 14:50  wygflying  阅读(171)  评论(0编辑  收藏  举报