0

Parallel Foreach 内で、記事に関するすべての情報を提供するサービスを呼び出しています。1 つの記事だけの情報を取得しようとすると、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

コアはいくつありますか?Parallelライブラリは、それを利用するための追加のプロセッサがない場合、追加のスレッドを起動しません。また、いくらかのオーバーヘッドがあります。4つの記事を並行して実行することは、多くの処理が行われていない限り、おそらく実際には価値がありません。

また、あなたのサービスはボトルネックではありませんか?

これを試して、改善があるかどうかを確認してください

   System.Net.ServicePointManager.DefaultConnectionLimit = 1000;

.NETを使用すると、同じホストへの同時HTTPパイプが2つしか許可されないため、サービスに接続する際にボトルネックが発生する可能性があります。

于 2012-10-23T06:27:38.663 に答える