在大多數情況下,Java 8流允許比老式的for
循環更易讀的代碼。但是,根據我自己的經驗和我讀過的內容,使用流而不是for循環可能涉及性能受到影響(或偶爾會有改善),有時難以預測。Java 8流將比for循環運行慢的關鍵指標?
在一個大的項目似乎並沒有寫每一個循環的基準測試是可行的,所以決定是否與流替換for
循環時,有哪些關鍵因素(如預期集合的大小,通過過濾去除的值的預期百分比,迭代操作的複雜性,減少或聚集的類型等)哪些可能指示將導致性能改變?
注:這是my earlier question縮小,這是關閉範圍過寬(和其並行數據流的方面進行了很好覆蓋in another SO question),所以我們只限於這連續流。
病例的99%以上,答案很簡單:寫的是代碼的清晰,可讀,可維護,顯然是正確的。雖然人們可以無休止地關注性能,但在大多數情況下,以美元衡量的實際成本差異爲零(因爲大部分代碼「足夠快」)。另一方面,認爲錯誤可能會產生真正的美元成本。 (而且,如果你只有不到1%的人需要爲表現煩惱,那麼你已經知道了,而且你已經在測量方法上做了大量投資。) –
感謝那些回答或評論的人。我的問題是基於法國雜誌上的一篇文章(Programmez,2016年1月),其中一些顧問分支了一個B2C網站的代碼並重構以用流替換許多'for'循環。基於性能測試(方法執行時間在最差情況下大致增加了一倍),他們無法說服產品所有者繼續在主分支中進行重構。很難將產品所有者推銷爲「我們將花費一週時間改進代碼,我們不會添加任何功能,產品運行速度會更慢」。 –