gpt4 book ai didi

java - Java 8 流运行速度比 for 循环慢的关键指标?

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:36 25 4
gpt4 key购买 nike

在大多数情况下,Java 8 流允许代码比老式的 for 循环更具可读性。但是,根据我自己的经验和阅读的内容,使用流而不是 for 循环可能会影响性能(或偶尔会有所改善),这有时很难预测。

在大型项目中,为每个循环编写基准测试似乎并不可行,因此在决定是否用流替换for循环时,关键因素是什么(例如,集合的预期大小、通过过滤删除的值的预期百分比、迭代操作的复杂性、缩减或聚合的类型等)可能指示将导致的性能变化?

注意:这是 my earlier question 的缩小范围,它因为过于宽泛而被关闭(并且并行流的方面已经很好地涵盖了 in another SO question ),所以让我们将其限制为顺序流。

最佳答案

不仅“为每个循环编写基准测试是不可行的”,而且会适得其反。当放入微基准测试时,特定的、特定于应用程序的循环可能会执行完全不同的操作。

对于实际应用程序,优化的标准规则适用:不要这样做。只需编写更具可读性的内容,仅当出现性能问题时,分析整个应用程序以检查特定循环或流的使用是否真的是瓶颈。只有在这种情况下,您才可以尝试在特定瓶颈处切换两种习语,看看是否有所不同。

在大多数情况下,它不会。如果存在真正的性能问题,它将源于操作类型,例如执行具有 O(n²) 时间复杂度等的嵌套迭代。此类问题不依赖于您使用的是 Stream 还是 for循环和这两个习语之间的微小性能差异不会改变您的代码缩放的方式。

关于java - Java 8 流运行速度比 for 循环慢的关键指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34632008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com