私は少し混乱していParallel.ForEach
ます。
それは何でParallel.ForEach
あり、それは正確に何をしますか?
MSDNリンクを参照しないでください。
簡単な例を次に示します。
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
この例をどのように書き換えることができParallel.ForEach
ますか?
これは、ここで回答されている場合がありますstackoverflow.com/questions/3789998/...
—
Ujjwal Manandhar
@UjjwalManandhar
—
リードコプシー、2012
Parallel
クラスとPLINQの使用の違いについて質問しているため、実際にはかなり異なります。
他の人はあなたがどのように書き直すことができるか答えました。それでそれは何をしますか?通常どおり、コレクション内の各アイテムに対して「アクション」を実行します
—
Jeppe Stig Nielsen 2012
foreach
。違いは、並列バージョンは多くの「アクション」を同時に実行できることです。ほとんどの場合(コードを実行しているコンピューター、コードの混み具合、その他の要素によって異なります)、処理速度は速くなり、それが最も重要な利点です。並行して実行すると、アイテムが処理される順序がわかりません。通常の(シリアル)foreach
では、lines[0]
最初に来ることが保証され、次にlines[1]
となります。
@JeppeStigNielsen並列化にはかなりのオーバーヘッドがあるため、常に高速になるとは限りません。これは、反復するコレクションのサイズとその内部のアクションによって異なります。正しいことは、Parallel.ForEach()の使用とforeach()の使用の違いを実際に測定することです。多くの場合、通常のforeach()の方が高速です。
—
デイブブラック
@DaveBlack確かに。どちらの場合も、それが速いか遅いかを測定する必要があります。私は一般的に並列化について説明しようとしていました。
—
Jeppe Stig Nielsen