gpt4 book ai didi

java - 有没有办法压缩两个流?

转载 作者:搜寻专家 更新时间:2023-11-01 02:06:19 27 4
gpt4 key购买 nike

这个问题源于对 another question 的回答,其中建议 map 和 reduce 同时计算总和。

在那个问题中有一个 complexCalculation(e),但现在我想知道如何通过将计算分成两部分来进一步并行化,以便 complexCalculation(e) = 第 1 部分(e) * 第 2 部分(e)。我想知道是否可以同时计算集合的 part1 和 part2(再次使用 map())然后压缩两个结果流,以便两个流的第 i 个元素与函数结合* 以便生成的流等于可以通过在该集合上映射 complexCalculation(e) 获得的流。在代码中,这看起来像:

Stream map1 = bigCollection.parallelStream().map(e -> part1(e));
Stream map2 = bigCollection.parallelStream().map(e -> part2(e));
// preferably map1 and map2 are computed concurrently...
Stream result = map1.zip(map2, (e1, e2) -> e1 * e2);

result.equals(bigCollection.map(e -> complexCalculation(e))); //should be true

所以我的问题是:是否存在一些功能,例如我试图在此处描述的 zip 功能?

最佳答案

parallelStream() 保证按照提交的顺序完成。这意味着您不能假设两个 parallelStreams 可以像这样压缩在一起。

您的原始 bigCollection.map(e -> complexCalculation(e)) 可能会更快,除非您的集合实际上小于您拥有的 CPU 数量。

关于java - 有没有办法压缩两个流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136577/

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