Maison >développement back-end >C++ >Comment Parallel.ForEach améliore-t-il les performances par rapport à une boucle Foreach traditionnelle dans .NET ?
Traitement parallèle avec Parallel.ForEach
La programmation parallèle améliore les performances des applications en exploitant plusieurs cœurs de processeur. Parallel.ForEach est une construction puissante qui simplifie le traitement parallèle dans les applications .NET.
Foreach Loop vs. Parallel.ForEach
La boucle foreach traditionnelle effectue des itérations de manière séquentielle sur un un seul fil. Parallel.ForEach, quant à lui, répartit la charge de travail sur plusieurs threads, permettant l'exécution simultanée d'itérations.
Caractéristiques des boucles Foreach :
Caractéristiques de Parallel.ForEach :
Conversion en Parallel.ForEach
Pour convertir l'extrait de code donné en Parallel.ForEach :
Parallel.ForEach(list_lines, line => { // My Stuff });
Exemple
L'exemple suivant montre la différence entre un foreach boucle et 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"); } } }
Output
La sortie démontrera que Parallel.ForEach exécute les itérations en parallèle, réduisant ainsi le temps de traitement global par rapport au boucle foreach traditionnelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!