今天,公司任务不重,本打算调优一下项目,因为直播项目的原因,不得不对性能上有更高的要求,哪怕提高
0.1ms的执行效率。无意之间对for循环嵌套这块发起了疑问,心想,能否可不用for循环,于是无意间去搜搜是否可能
有替换for循环的新事物,想想都好激动呢!于是有以下的结果:
------------------------------------------我是很粗很粗的分割线-------------------------------------------------
对于摒弃使用某度作为搜索工具的同行们,请忽略这一细节,然后我就开始学习了,学习了,习了,了。。。不多说废话,直接贴代码:
@Test
public void testStreamJ8New(){
long start,end,sum = 0;//定义执行开始时间,结束时间,总时间
List<Integer> list = new ArrayList<Integer>();
Stream.iterate(1, items -> items + 1).limit(5000000).forEach(item -> list.add(item));//五百万的记录
//目的:过滤小于1024的数
for(int i = 1;i <= 100;i++){//循环一百遍,汇聚100次总的执行时间
start = System.currentTimeMillis();
//方案一:
//List<Integer> list2 = list.stream().filter(item -> item >= 1024).collect(Collectors.toList());
//System.out.println(list2.size());
//方案二:
List<Integer> list2 = new ArrayList<Integer>();
for (Integer i2 : list) {
if(i2 >= 1024)
list2.add(i2);
}
//System.out.println(list2.size());
end = System.currentTimeMillis();
sum += (end - start);
}
System.out.println((sum/100) + "ms");//计算平均结果
}
我等待了很久很久很久很久,,终于,,结果,却,,很让人失望,明显 for循环 平均执行时间要短一些,所以我放弃了jdk8的新特性,自从oracle收购了sun公司之后,觉得就如同乔布斯去世之后的苹果。。如果各位大神想撕逼,欢迎留言,不服来战!!这样我们才能更好的进化!!