首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套Parallel.ForEach循环

嵌套Parallel.ForEach循环
EN

Stack Overflow用户
提问于 2012-09-27 09:35:21
回答 2查看 25.9K关注 0票数 26

我有一些代码,我目前正在为多核架构中的并发性进行优化。在我的一个类中,我找到了一个嵌套的foreach循环。基本上,外部循环遍历一个NetworkInterface对象数组。内循环通过网络接口IP地址进行迭代。

这让我想到,使用嵌套的Parallel.ForEach循环一定是个好主意吗?在阅读了这篇文章(Nested Parallel.ForEach Loops on the same list?)之后,我仍然不确定在效率和并行设计方面适用什么。这个例子是关于将Parallel.Foreach语句应用于一个列表,其中两个循环都在执行该列表上的操作。

在我的例子中,循环正在做不同的事情,所以,我应该:

  1. 使用嵌套的Parallel.ForEach循环?
  2. 父循环上的用户Parallel.ForEach,并将内循环保持为-原样?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-27 09:44:32

Parallel.ForEach不一定并行执行--如果可能的话,这只是一个请求。因此,如果执行环境不具备并行执行循环的CPU能力,则不会这样做。

如果循环上的操作不相关(也就是说,如果它们是分开的,并且不相互影响),我认为在内部循环和外部循环上使用Parallel.ForEach都没有问题。

这取决于执行环境。如果您的测试环境与生产环境非常相似,您可以执行定时测试,然后确定要做什么。当有疑问时,测试;)

祝好运!

票数 34
EN

Stack Overflow用户

发布于 2012-09-27 09:44:20

答案将是,这取决于;

  1. 一旦你有了IP地址,你在做什么?
  2. 每一步需要多长时间?

线程并不便宜,它们需要时间来创建,而内存则需要存在。如果您没有对这些IP地址执行计算成本高昂的操作,并且使用错误类型的集合进行并发访问,那么几乎可以肯定地说,您正在减慢您的应用程序。

使用StopWatch帮助您回答这些问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12618338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档