gpt4 book ai didi

performance - allMatch、noneMatch、filter 和 map 的 Java 流并行行为

转载 作者:行者123 更新时间:2023-12-01 10:36:14 25 4
gpt4 key购买 nike

我在另一篇文章中读到,经过调查发现 anyMatch 终端操作的工作方式是每个线程(在子流上操作)定期检查其他线程是否已找到结果,如果是,则所有其他线程都是停止了。

我假设,但想知道是否有人可以验证 noneMatchallMatch 是否也以这种方式运行,所以如果在运行 noneMatch 时,一个线程找到实际匹配项,然后操作可以返回 false。那么所有其他线程是否以与 anyMatch 相同的方式定期检查它?类似地,反转是否适用于 allMatch

此外,我想知道在并行运行 filtermap 操作时,它们是在有序流上运行还是在无序流上运行时是否存在任何差异。在有序流上,我假设最合乎逻辑的好处就是不同的线程可以处理创建的每个子流,然后以相同的顺序将它们全部合并回一起。对于无序流,这对我难以想到的此类操作有任何优势吗?

最佳答案

所有三个 anyMatchallMatchnoneMatch 都是使用相同的 MatchOps 实现的设置不同标志的类。所以他们以非常相似的方式工作。它们都是短路且无序的,因此无论您的流源是否有序都没有关系:这些操作将执行得同样快。

mapfilter 等操作对无序源没有任何好处。无序源更改了distinctlimitskiptakeWhile (Java-9)、的算法dropWhile (Java-9)。似乎正常的减少(通过 reducecollect)不会优化无序的情况(尽管我的初步研究表明这种优化是可能的)。

关于performance - allMatch、noneMatch、filter 和 map 的 Java 流并行行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924008/

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