【发布时间】:2011-12-29 19:04:16
【问题描述】:
我正在尝试了解 parallel 的使用何时会提高性能。
我用一个简单的代码对其进行了测试,该代码在 List<Person> 中运行了超过 100,000 个项目,并将每个项目的名称更改为 string.Empty。
并行版本的时间是普通版本的两倍。 (是的,我测试了更多的一个核心......)
我看到this 的回答说有一段数据并不总是并行对性能有好处。
在MSDN 教程的并行示例的每一页中也重复了这一警告:
这些示例主要用于演示用法,可能或 可能不会比等效的顺序 LINQ to Objects 运行得更快 查询
我需要一些规则和提示,什么时候并行会提高我的代码的性能,什么时候不会。
显而易见的答案是“测试您的代码,如果并行循环更快,请使用它”,这是绝对正确的,但我猜没有人对他编写的每个循环进行性能分析。
【问题讨论】:
-
很难推测代码的性能。当我们还必须推测代码的结构时,这尤其困难。你能发布你提到的“简单代码”吗?
-
当您使用 ReSharper 后台分析工具分析 C# 解决方案中的 2,350 个文件时:shakefist:
-
@phoog 我没有故意提供代码以使问题比我的测试更广泛。
-
对于 100,000 个循环的简单操作,并行可能没有任何好处。对于说 100 个循环的其他操作,并行可能会增加显着的好处。相对少量循环的好处最明显的例子之一是质数生成器。搜索一些使用并行的素数生成器示例,您可能会清楚地了解好处的所在
标签: c# .net performance parallel-processing