Je suis un peu confus à propos Parallel.ForEach
.
Qu'est-ce que Parallel.ForEach et que fait-il exactement ?
Veuillez ne pas faire référence à un lien MSDN.
Voici un exemple simple :
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
Comment réécrire cet exemple avec Parallel.ForEach ?
0 votes
On a peut-être répondu à cette question ici stackoverflow.com/questions/3789998/
2 votes
@UjjwalManandhar C'est en fait assez différent, puisque la question porte sur la différence entre le
Parallel
et en utilisant PLINQ.20 votes
D'autres ont répondu comment vous pouvez réécrire. Alors, que fait-il ? Il effectue une "action" sur chaque élément de la collection, tout comme une action normale
foreach
. La différence est que la version parallèle peut effectuer plusieurs "actions" en même temps. Dans la plupart des cas (en fonction de l'ordinateur qui exécute le code, de son niveau d'activité et d'autres facteurs), elle sera plus rapide, et c'est l'avantage le plus important. Notez que lorsque vous le faites en parallèle, vous ne pouvez pas savoir dans quelle commander les articles sont traités. Avec un habituel (série)foreach
vous avez la garantie quelines[0]
vient en premier, puislines[1]
et ainsi de suite.1 votes
@JeppeStigNielsen Il le fera. no ne sera pas toujours plus rapide, car il y a des frais généraux importants pour rendre les choses parallèles. Cela dépend de la taille de la collection sur laquelle vous itérez et de l'action qu'elle contient. La bonne chose à faire est de mesure la différence entre l'utilisation de Parallel.ForEach() et l'utilisation de foreach(). Souvent, un foreach() normal est plus rapide.
3 votes
@DaveBlack Bien sûr. On devra mesure si elle est plus rapide ou plus lente, dans chaque cas. J'essayais juste de décrire la parallélisation en général.