首頁 > 後端開發 > C++ > 與 .NET 中的傳統 Foreach 迴圈相比,Parallel.ForEach 如何提高效能?

與 .NET 中的傳統 Foreach 迴圈相比,Parallel.ForEach 如何提高效能?

Susan Sarandon
發布: 2025-01-06 00:36:38
原創
695 人瀏覽過

How Does Parallel.ForEach Improve Performance Compared to a Traditional Foreach Loop in .NET?

使用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板