for、foreach、stream都可以循环处理数据,如果单纯当循环使用,for、foreach、stream哪个性能更好?直接代码测试;
结论
千万次循环以内foreach稍微好一点,但是与for差距不是很大;
超过千万次循环stream稍微好点,优于for和foreach。
测试说明
测试数据源:ArrayList
变量:for、foreach、stream
常量:打印数据源数组中的数据
结果:执行时间ms
代码:
public class Test {
public static void main(String[] args) {
// 测试的数据条数
int times = 1000;
// 初始化测试数据
List<String> testData = new ArrayList<>();
for (int i = 0; i < times; i++) {
testData.add(UUID.randomUUID().toString());
}
// For循环测试
Long beginFor = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
System.out.println(testData.get(i));
}
Long endFor = System.currentTimeMillis();
// 统计for循环执行打印的时间
long timesFor = endFor - beginFor;
// Foreach循环测试
Long beginForeach = System.currentTimeMillis();
for (String s : testData) {
System.out.println(s);
}
Long endForeach = System.currentTimeMillis();
// 统计foreach循环执行打印的时间
long timesForeach = endForeach - beginForeach;
// Stream循环测试
Long beginStream = System.currentTimeMillis();
testData.forEach(System.out::println);
Long endStream = System.currentTimeMillis();
// 统计Stream循环执行打印的时间
long timesStream = endStream - beginStream;
System.out.println(times + "次操作,For循环执行时间:" + timesFor + "ms");
System.out.println(times + "次操作,Foreach循环执行时间:" + timesForeach + "ms");
System.out.println(times + "次操作,Stream循环执行时间:" + timesStream + "ms");
}
}