嵌套Parallel.For()循环速度和性能我有一个嵌套的for循环。我用Parallel.For()替换了第一个For,计算速度提高了。我的问题是用Parallel.For()替换第二个(在Parallel.For()内。它会提高速度吗?还是没有区别?还是会更慢?编辑:因为核心不是无限的(有通常2到8个核心),内部循环并行运行。因此,如果我用Parallel.For()更改内部循环,它会再次并行运行。但我不确定它如何改变性能和速度。从“太细粒度到太粗粒度”小节,.NET并行计算团队的书“并行编程模式”的反模式部分:答案是通过性能测试找到最佳点。如果并行化的开销与进行中的工作,然后尽可能并行化:在这种情况下,这意味着并行化两个循环。如果并行化内部循环的开销会降低大多数系统的性能,那么在这样做之前请三思,因为它最多只能是外部循环loopcanbeparallelized.看看那个小节,它是独立的,并且有一个并行光线追踪应用程序的详细示例。它建议扁平化循环以获得更好的并行性。它也可能对你有帮助帮助。它再次取决于许多场景,您的cpu可以运行的并行线程数。迭代次数。如果您的CPU是单核处理器,您将得不到任何好处。如果你有更多的迭代,你会得到一些改进......如果只有几次迭代,它会很慢,因为它涉及额外的过载。这在很大程度上取决于您在for和machine中使用的数据和功能。我最近弄乱了parallel.for和parallel。foreach,并发现它们使我的应用程序变慢了......(在4核机器上,也许如果你有一个24核服务器是另一回事)我认为管理线程意味着太多开销......即使MS有一个24核服务器在他们的文档中(这里有一个关于msdn的长pdfhttp://www.microsoft.com/download/en/details.aspx?displaylang=en&id=19222)承认它不会让应用程序运行得更好Be快的。你必须每次都尝试,如果它有效,那就太好了,如果你幸运的话。您应该尝试使用外部和内部,但至少在我尝试过的应用程序中,它们都没有使应用程序更快。外部或内部无关紧要,我只是得到相同的执行时间或更糟。也许如果您也使用并发集合,您会获得更好的性能。但同样,如果不尝试,就无法判断。编辑:我刚刚在MSDN上找到了一个很好的链接,证明对我的情况非常有用(改善了我的情况)以提高Parallel.foreach性能http://msdn.microsoft.com/en-us/library/dd560853.aspx以上是C#学习教程全文内容:嵌套Parallel.For()循环速度与性能分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
