Java 8流的运行速度是否会比for循环慢?
for
在大多数情况下,Java
8流允许比老式循环可读得多的代码。但是,根据我自己的经验和所阅读的内容,使用流而不是for循环可能会导致性能下降(或有时会有所改善),这有时很难预测。
在大型项目中,为每个循环编写基准测试似乎不可行,因此,
(例如,预期的集合大小,预期的百分比值被删除)。过滤,迭代操作的复杂性,归约或聚合的类型等)
注意:这是[我先前问题的缩小范围,该问题因过于广泛而被关闭(并且另一个SO问题已很好地涵盖了并行流的各个方面),因此我们仅将其限制为顺序流。
回答:
这不仅“为每个循环编写基准测试都不可行”,而且适得其反。当放入微基准测试时,特定于应用程序的特定循环可能会执行完全不同的操作。
对于实际应用,适用优化的标准规则: 不要这样做 。只需编写更具可读性的内容,并且 仅在 出现性能问题时, 对整个应用程序 进行概要分析 ,
以检查特定循环或流使用是否确实是瓶颈。只有在这种情况下,您才可以尝试在特定瓶颈处的两种习惯用法之间切换,以查看它是否有所作为。
在大多数情况下,不会。如果存在实际的性能问题,则将O(n²)
取决于操作的类型,例如执行具有时间复杂度的嵌套迭代等。此类问题不取决于您使用的Stream
是for
循环还是循环以及这两者之间的微小性能差异。习惯用法不会改变代码的
扩展方式 。
以上是 Java 8流的运行速度是否会比for循环慢? 的全部内容, 来源链接: utcz.com/qa/417164.html