Parallélisation du traitement avec Parallel.ForEach
Dans la programmation .NET, la boucle foreach traditionnelle effectue des itérations de manière séquentielle, un élément à la fois, en utilisant un seul fil. Cette approche peut entraîner un traitement plus lent pour les tâches impliquant des opérations longues ou intensives.
Présentation de Parallel.ForEach
La méthode Parallel.ForEach permet un traitement parallèle en exploitant plusieurs threads. . Cette méthode exécute des itérations simultanément, divisant la tâche de traitement entre les threads disponibles. En répartissant la charge de travail, Parallel.ForEach peut améliorer considérablement le temps d'exécution, en particulier pour les processus lents ou gourmands en données.
Cependant, il est important de noter que Parallel.ForEach n'est pas toujours plus rapide. Pour les processus courts ou rapides, la surcharge impliquée dans la création et la gestion des threads peut dépasser les avantages en termes de performances.
Exemple de conversion en Parallel.ForEach
Considérez le code suivant en utilisant une boucle foreach :
string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(lines); foreach (string line in list_lines) { // Perform operations on each line }
Pour réécrire ce code en utilisant Parallel.ForEach :
Parallel.ForEach(list_lines, line => { // Perform operations on each line });
Dans cet exemple, la méthode Parallel.ForEach prend la collection list_lines en entrée et crée un nouveau thread pour chaque ligne afin d'exécuter les opérations spécifiées en parallèle.
Différences clés entre Foreach Loop et Parallel.ForEach
Feature | Foreach Loop | Parallel.ForEach |
---|---|---|
Iteration Style | Sequential | Parallel |
Thread Usage | Single Thread | Multiple Threads |
Framework Availability | All .NET frameworks | .NET 4.0 and newer |
Overhead | Low for quick processes | Higher for quick processes due to thread creation and management |
Performance | Faster for short and quick processes | Faster for lengthy and data-intensive processes |
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!