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
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
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
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
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
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
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
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
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