使用 Parallel.ForEach 進行並行處理
並行程式設計透過利用多個處理器核心來增強應用程式效能。 Parallel.ForEach 是一個強大的構造,可簡化 .NET 應用程式中的平行處理。
Foreach 迴圈與 Parallel.ForEach
傳統的 foreach 迴圈在單一執行緒。另一方面,Parallel.ForEach 將工作負載分配到多個線程,從而能夠同時執行迭代。
Foreach循環的特性:
Parallel.ForEach的特性:
轉換為Parall el.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中文網其他相關文章!