使用Parallel.Foreach的最小项目处理时间
本文关键字:小项目 处理 时间 Parallel Foreach 使用 | 更新日期: 2023-09-27 18:10:00
假设我有一个项目列表,这些项目当前正在正常的foreach循环中处理。假设项目的数量明显大于核心的数量。根据经验,在我考虑将for循环重构为Parallel.ForEach之前,每个项应该花费多少时间?
这是并行编程的核心问题之一。为了得到一个准确的答案,你仍然需要在确切的情况下进行测量。
TPL的最大优点是阈值比以前小得多,并且当您的工作项太小时,您不会受到惩罚(那么多)。
我曾经做过一个有两个嵌套循环的演示,我想展示只有外层的一个应该并行运行。但是演示没有显示将两者都转换为Parallel.For()的明显缺点。
所以如果循环中的代码是独立的,那就去做吧。
#items/#cores比率不是很相关,TPL将划分范围并使用"正确"数量的线程。
在一个大型数据处理项目中,我使用的任何包含两个或三个以上语句的循环都从Parallel.Foreach中受益匪浅。如果循环处理的数据是原子的,那么与Parallel库提供的巨大好处相比,我认为它几乎没有什么缺点。