1

我试图通过使用并行扩展使我的计算应用程序更快。我是新手,所以我刚刚用 Parallel.ForEach 替换了主 foreach 循环。但是计算变得更慢了。降低并行扩展性能的常见原因有哪些?

谢谢

4

1 回答 1

1

只有满足多个条件,您才能通过并行运行获得改进。首先,为什么您可以期望速度提高?

您可以期待性能提升的情况是,例如

  1. 如果您有顺序操作在等待资源,例如与服务器建立 TCP 连接并下载数据,则并行执行可能会更快。
  2. 如果您有多个处理器/内核,则在一个内核上执行每个任务可能会更快,而不是使用 100% 的一个内核而不使用其他内核。

如果您有一个内核和许多小操作,则上下文切换和分配管理并行线程所需的资源所需的额外工作可能会超过优势。

如果您描述您的特定情况,我们可以尝试推测为什么在您的示例中速度较慢。

实际上,关于并行计算的 WikiPedia 条目对此有一些很好的信息,请参见http://en.wikipedia.org/wiki/Parallel_computing

你要特别注意阿姆达尔定律。

于 2010-05-28T08:12:56.070 回答