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


分享到:


相關文章: