代码之家  ›  专栏  ›  技术社区  ›  Emil Lerch

平行前臂和平行前臂的指导原则是什么?

  •  8
  • Emil Lerch  · 技术社区  · 15 年前

    我对parallel.foreach的性能特性很好奇。给定parallel.foreach循环内的任何有效构造,是否总是首选parallel.foreach而不是foreach循环?我特别想知道在小集合或其他边缘情况下调用并行任务库的开销,在这些情况下,foreach循环可能更快。我知道库在何时/如何生成线程方面非常聪明……在某些情况下,将代码留在foreach循环中更好,还是调用并行任务的开销通常是可忽略的,因此如果可以,应该使用parallel.foreach?

    这个问题很相似,提供了很好的功能差异信息,但并不能真正说明性能。请注意,我忽略了与.NET<4的兼容性,这是保持foreach的原因:

    C#: Any benefit of List<T>.ForEach(...) over plain foreach loop?

    2 回复  |  直到 6 年前
        1
  •  10
  •   Marc.2377    6 年前

    这并不总是可取的。对于快速循环体,parallel.foreach会降低性能。中列出的指导原则之一 Parallel Programming Coding Guidelines 是为了 测量 并联前后。

    其他有用的文章已由 parallel computing group .

        2
  •  2
  •   NotDan    15 年前

    我想说的是,只要你有一个可测量的需求,就一定要坚持简单的(即规则前臂),并且只实现更复杂的东西(即平行前臂)。因此,如果你能证明在特定的情况下,正常的前臂没有你需要的那么快,并且你能证明在特定的情况下,平行的前臂可以解决你的问题,那么使用平行的前臂。

    否则就简单点。