OCP书中说,所有的流都默认排序,但可以使用unordered()方法将有序流转换为无序流。这会使一个更快的并行流?
它也表示,在调用parallel()终端操作之前,将此方法用作中间操作时,此方法可以大大提高性能。我的问题是:下面的parallelstream会比那个下面的更快吗?
Arrays.asList(1,2,3,4,5,6).stream().unordered().parallel()
Arrays.asList(1,2,3,4,5,6).parallelStream().
PS:我知道一个parallelstream doesent提高性能的小集合工作时,但让我们假装我们是一个非常大的集合在这里工作。
第二个流仍然是正确的?那么第一个会有更好的表现吗?
谢谢
此外,有关遭遇顺序的更多信息:http://www.lambdafaq.org/in-what-order-do-the-elements-of-a-stream-become-available/他们还得出结论:可能的表现改进取决于你之后对流的操作。 –
@Malte Hartwig:当然,这取决于后续的操作,a)如果他们还没有排在第一位,b)是否有办法从无序中受益。在当前的Java 8参考实现中,我找不到任何* .unordered()链接的例子。 (不要混淆使用'findAny()'而不是'findFirst()'等,这些*有*效果)... – Holger