100万条数据遍历,lambda会比for循环快吗?

听-花开的声音


这个得看情况来分析。

lambda表达式中有一种流叫parallelSteam,这叫并行流。相对stream流来讲,对流的处理是并行处理,所以效率上肯定比单纯的for循环。不过并行流有个缺陷,就是易产生并发安全问题。所以这玩意还是慎用。

当然,stream流也有自己的优势,假如你有多个处理操作,比如过滤某个集合中特定条件的元素后将其进行转化后再遍历输出,此时涉及多个操作,如果用传统的for循环来做,则不如stream效率高。因为它封装了对集合进行操作的算法和方法,是从底层进行处理。如果只是一个遍历操作,两者效率上差别不是很大。

更关键的是,使用stream流可以使代码更简洁,虽然对老程序员不是很友好,但是你只要花点时间研究研究,你就会喜欢上这种写法。


但求无Bug


lambda中有并行流,可以多线程处理。不过单纯的100万条数据纯遍历,for还是会快一些的,数据量小的时候,多线程不一定比单线程快,不过当数据量很大,大几千万甚至上亿的时候,并行流或许会快一些



乾隆哇


很多情况下lambda会快,大部分编译器会把lambda变成inline函数。如果for循环不在inline函数里,代码不会被cache,如果for循环在override的函数中,会更慢。所以,lambda是替代多态(虚指针)的好办法。


qinzhang1


应该不会,越是简单的语法,越是执行效率慢。这也解释了为什么python执行效率不如java


分享到:


相關文章: