0

在 Parallel Foreach 中,我正在调用一项服务,该服务为我提供有关一篇文章的所有信息,如果我尝试仅获取一篇文章的信息,则需要 6 秒。

我对此的疑问:

  • 如果我要获取4篇文章的信息,需要多长时间?+- 6 秒??

  • 实际上这样做需要 27 秒,有一种简单的方法可以检查它是否在并行工作?

使用 C# MVC3

代码:

   private void PopulateArticleDictionary()
    {
        List<Article> tmpArticleFirstLevel = new List<Article>();
        Parallel.ForEach<Article>(ArticlesFirstLevel,
            article =>
            {
                var articleInDepth = ArticleService.SearchByCode(article.Code, article.Code18, article.Quantity, "ES", "EUR");
                if (articleInDepth == null)
                {
                    tmpArticleFirstLevel.Add(article);
                }
                else
                {
                    tmpArticleFirstLevel.Add(articleInDepth);
                }                   

            }
            );            
        ArticlesFirstLevel = tmpArticleFirstLevel;
    }

谢谢 !

4

1 回答 1

0

你有几个核心?如果您没有额外的处理器来利用它,并行库将不会启动额外的线程。还有一些开销,在 4 篇文章上并行可能并不值得,除非你有很多工作要做。

另外,您确定您的服务不是瓶颈吗?

试试这个,看看有没有改进

   System.Net.ServicePointManager.DefaultConnectionLimit = 1000;

您可能会遇到连接到服务的瓶颈,因为开箱即用的 .NET 仅允许 2 个并发 HTTP 管道连接到同一主机。

于 2012-10-23T06:27:38.663 回答