moo*_*eep 3 c++ parallel-processing c++17
我只是在想我们是否可以加快出现在排序的不同元素的提取std::list<int>通过运行并行版本的std::unique_copy().
我对这如何运作的概念是这样的:
但正如我所看到的那样,只有一个ForwardIterator而不是RandomAccessIterator,需要至少两次传递来并行解决这个问题:一次传递设置部分,下一次传递应用算法.
我理解,并非每个问题都会受益于并行化的优点.
我的概念是如何正确的(大约)?
那么我的问题是,为什么并行算法不需要RandomAccessIterators?在这里支持ForwardIterator是否有益?算法能否检测到它们具有哪种类型的迭代器,并相应地选择更高效的版本?
并行算法支持前向迭代器的原因是并行化可以提高这些算法的性能.
是的,前向迭代器只能通过受控序列一次移动一步.但是算法不仅仅是移动 - 你还必须看看算法所做的其他事情.
例如,如果复制一个对象是昂贵的,那么std::copy前向迭代器可以更快并行,因为复制对象所需的时间占据了遍历时间; 吐出并行副本可以提高整体速度,即使前向迭代器意味着并行算法比串行算法做更多的工作.