Parallel.ForEach による処理の並列化
.NET プログラミングでは、従来の foreach ループは、以下を使用して一度に 1 要素ずつ反復を順番に実行します。単一のスレッド。このアプローチでは、長時間または集中的な操作を伴うタスクの処理が遅くなる可能性があります。
Parallel.ForEach の紹介
Parallel.ForEach メソッドでは、複数のスレッドを利用して並列処理が可能になります。 。このメソッドは反復を同時に実行し、処理タスクを使用可能なスレッド間で分割します。ワークロードを分散することにより、Parallel.ForEach は、特に遅いプロセスやデータ集約型のプロセスの実行時間を大幅に短縮できます。
ただし、Parallel.ForEach が常に高速であるとは限らないことに注意することが重要です。短いプロセスや迅速なプロセスの場合、スレッドの作成と管理に伴うオーバーヘッドがパフォーマンス上の利点を上回る可能性があります。
Parallel.ForEach への変換の例
次のコードを使用して考えてみましょう。 foreach ループ:
string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(lines); foreach (string line in list_lines) { // Perform operations on each line }
このコードを次のように書き直すと、 Parallel.ForEach:
Parallel.ForEach(list_lines, line => { // Perform operations on each line });
この例では、Parallel.ForEach メソッドは list_lines コレクションを入力として受け取り、行ごとに新しいスレッドを作成して、指定された操作を並列実行します。
Foreach ループと Parallel.ForEach の主な違い
Feature | Foreach Loop | Parallel.ForEach |
---|---|---|
Iteration Style | Sequential | Parallel |
Thread Usage | Single Thread | Multiple Threads |
Framework Availability | All .NET frameworks | .NET 4.0 and newer |
Overhead | Low for quick processes | Higher for quick processes due to thread creation and management |
Performance | Faster for short and quick processes | Faster for lengthy and data-intensive processes |
以上が.NET で Foreach ループの代わりに Parallel.ForEach を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。