Heim >Backend-Entwicklung >C++ >Wie verbessert Parallel.ForEach die Leistung im Vergleich zu einer herkömmlichen Foreach-Schleife in .NET?

Wie verbessert Parallel.ForEach die Leistung im Vergleich zu einer herkömmlichen Foreach-Schleife in .NET?

Susan Sarandon
Susan SarandonOriginal
2025-01-06 00:36:38661Durchsuche

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

Parallele Verarbeitung mit Parallel.ForEach

Parallele Programmierung verbessert die Anwendungsleistung durch die Nutzung mehrerer Prozessorkerne. Parallel.ForEach ist ein leistungsstarkes Konstrukt, das die parallele Verarbeitung in .NET-Anwendungen vereinfacht.

Foreach-Schleife vs. Parallel.ForEach

Die traditionelle foreach-Schleife führt Iterationen nacheinander auf einem aus einzelner Thread. Parallel.ForEach hingegen verteilt die Arbeitslast auf mehrere Threads und ermöglicht so die gleichzeitige Ausführung von Iterationen.

Eigenschaften von Foreach-Schleifen:

  • Sequentielle Ausführung von Iterationen
  • Einzelthread-Nutzung
  • Ideal für schnelle Vorgänge wobei der Threading-Overhead nicht signifikant ist

Eigenschaften von Parallel.ForEach:

  • Parallele Ausführung von Iterationen
  • Nutzung mehrerer Threads
  • Von Vorteil für langsame Vorgänge, bei denen die Parallelisierung verbessert wird Leistung

Konvertieren in Parallel.ForEach

So konvertieren Sie das angegebene Code-Snippet in Parallel.ForEach:

Parallel.ForEach(list_lines, line =>
{
    // My Stuff
});

Beispiel

Das folgende Beispiel zeigt den Unterschied zwischen einer foreach-Schleife und 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");
        }
    }
}

Ausgabe

Die Ausgabe zeigt, dass Parallel.ForEach die Iterationen parallel ausführt, wodurch die Gesamtverarbeitungszeit im Vergleich zum herkömmlichen foreach verkürzt wird Schleife.

Das obige ist der detaillierte Inhalt vonWie verbessert Parallel.ForEach die Leistung im Vergleich zu einer herkömmlichen Foreach-Schleife in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn