c# - 使用 Parallel.Foreach 的最短项目处理时间

标签 c# .net multithreading parallel-processing

假设我有一个当前在普通 foreach 循环中处理的项目列表。假设项目数明显大于核心数。根据经验,在我考虑将 for 循环重构为 Parallel.ForEach 之前,每个项目应该花费多少时间?

最佳答案

这是并行编程的核心问题之一。为了获得准确的答案,您仍然需要在确切的情况下进行测量。

然而,TPL 的一大优势是阈值比以前小得多,并且当您的工作项太小时您不会受到(同样多的)惩罚。

我曾经制作过一个包含 2 个嵌套循环的演示,我想展示只有外部循环应该并行运行。但是演示未能显示将两者都转换为 Parallel.For() 的显着缺点。

因此,如果您循环中的代码是独立的,那就去做吧。

#items/#cores 比率不是很相关,TPL 将划分范围并使用“正确”数量的线程。

关于c# - 使用 Parallel.Foreach 的最短项目处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603327/

相关文章:

c# - 如何识别与其父/容器类同名的局部变量

c# - 将连字字符放入 ComboBox 文本

c# - 将值从一个业务对象复制到另一个,而无需在 C# 中循环

.net - dotfuscator并行优化?

c++ - 没有原子的 SPSC 无锁队列

c# - WPF 执行两个交替的 UI 任务

c# - c++/c# 编码结构以获取固定指针

c# - Unity Firebase 中的 InitializationException

c# - Array.BinarySearch() 返回值

windows - 如何将 SetThreadAffinityMask 与 QueryPerformanceFrequency 一起使用?