La recherche d'un peu de conseils sur l'effet de levier AsParallel()
ou Parallel.ForEach()
à la vitesse de cette.
Voir la méthode que j'ai (simplifié/métisser pour cet exemple) ci-dessous.
Il faut une liste comme "US, FR, APAC", où "APAC" est un alias de peut-être 50 autres "US, FR, JP, C', GO", etc. pays. La méthode "US, FR, APAC", et de le convertir à une liste de "NOUS", "FR", en plus de tous les pays qui sont dans "APAC".
private IEnumerable<string> Countries (string[] countriesAndAliases)
{
var countries = new List<string>();
foreach (var countryOrAlias in countriesAndAliases)
{
if (IsCountryNotAlias(countryOrAlias))
{
countries.Add(countryOrAlias);
}
else
{
foreach (var aliasCountry in AliasCountryLists[countryOrAlias])
{
countries.Add(aliasCountry);
}
}
}
return countries.Distinct();
}
Ce parallélisée aussi simple que de changer à ce qui est ci-dessous? Il y a plus de nuance à l'aide d' AsParallel()
que cela? Dois-je utiliser Parallel.ForEach()
au lieu de foreach
? Quelles sont les règles du pouce doit-je utiliser lors de la parallélisation foreach
boucles?
private IEnumerable<string> Countries (string[] countriesAndAliases)
{
var countries = new List<string>();
foreach (var countryOrAlias in countriesAndAliases.AsParallel())
{
if (IsCountryNotAlias(countryOrAlias))
{
countries.Add(countryOrAlias);
}
else
{
foreach (var aliasCountry in AliasCountryLists[countryOrAlias].AsParallel())
{
countries.Add(aliasCountry);
}
}
}
return countries.Distinct();
}