Parallel.ForEach による並列処理
並列プログラミングは、複数のプロセッサ コアを利用することでアプリケーションのパフォーマンスを向上させます。 Parallel.ForEach は、.NET アプリケーションでの並列処理を簡素化する強力な構造です。
Foreach ループと Parallel.ForEach
従来の foreach ループは、反復を順番に実行します。シングルスレッド。一方、Parallel.ForEach はワークロードを複数のスレッドに分散し、反復の同時実行を可能にします。
Foreach ループの特徴:
Parallel.ForEach の特性:
Parallel.ForEach への変換
指定されたコード スニペットを次のように変換するにはParallel.ForEach:
Parallel.ForEach(list_lines, line => { // My Stuff });
例
次の例は、foreach ループと Parallel.ForEach:
using System; using System.Diagnostics; using System.Collections.Generic; using System.Threading.Tasks; namespace ParallelForEachExample { class Program { static void Main() { var lines = File.ReadAllLines("proxylist.txt"); var list_lines = new List<string>(lines); Console.WriteLine("Traditional foreach loop"); var watch = Stopwatch.StartNew(); foreach (var line in list_lines) { Console.WriteLine(line); Thread.Sleep(10); } watch.Stop(); Console.WriteLine($"foreach loop execution time: {watch.ElapsedMilliseconds} ms"); Console.WriteLine("Using Parallel.ForEach"); watch = Stopwatch.StartNew(); Parallel.ForEach(list_lines, line => { Console.WriteLine(line); Thread.Sleep(10); }); watch.Stop(); Console.WriteLine($"Parallel.ForEach() execution time: {watch.ElapsedMilliseconds} ms"); } } }
の違いを示しています。 出力
出力は次のとおりです。 Parallel.ForEach は反復を並列に実行し、従来の foreach ループと比較して全体の処理時間を短縮します。
以上が.NET の従来の Foreach ループと比較して、Parallel.ForEach はどのようにパフォーマンスを向上させますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。