developpement:dotnet:csharp:introduction
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
developpement:dotnet:csharp:introduction [2023/10/04 23:35] – [Continuation with state] sgariepy | developpement:dotnet:csharp:introduction [2023/10/05 15:11] – [PLINQ] sgariepy | ||
---|---|---|---|
Ligne 1442: | Ligne 1442: | ||
} | } | ||
+ | </ | ||
+ | |||
+ | ===== PLINQ ===== | ||
+ | |||
+ | Parallel LINQ: | ||
+ | |||
+ | * Automates parallelization | ||
+ | * Considéré déclaratif plutôt qu' | ||
+ | * Opérateurs qui font en sorte que ce n'est pas parallélisé: | ||
+ | * Take, Select, SelectMany, Skip, TakeWhile, SkipWhile, ElementAt | ||
+ | * Anomalies | ||
+ | * Join, GroupBy, GroupJoin, Distinct, Union, Intersect, Except | ||
+ | * Force parallelism: | ||
+ | * .AsParallel().withExecutionMode(ParallelExecution.ForceParallelism) | ||
+ | |||
+ | |||
+ | <code csharp> | ||
+ | void Main() | ||
+ | { | ||
+ | var list = Enumerable.Range(1, | ||
+ | var primeNumbers = list | ||
+ | .AsParallel() | ||
+ | .Where(IsPrime); | ||
+ | Console.WriteLine(" | ||
+ | } | ||
+ | |||
+ | bool IsPrime(int x) | ||
+ | { | ||
+ | if (x == 1) return false; | ||
+ | if (x == 2) return true; | ||
+ | if (x % 2 == 0) return false; | ||
+ | var boundary = (int)Math.Floor(Math.Sqrt(x)); | ||
+ | |||
+ | for (int i = 3; i <= boundary; i += 2) | ||
+ | { | ||
+ | if (x % i == 0) | ||
+ | { | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | return true; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Degree of Parallelism ==== | ||
+ | |||
+ | <code csharp> | ||
+ | void Main() | ||
+ | { | ||
+ | List< | ||
+ | websites.Add(" | ||
+ | websites.Add(" | ||
+ | websites.Add(" | ||
+ | | ||
+ | List< | ||
+ | .AsParallel() | ||
+ | .WithDegreeOfParallelism(websites.Count()) | ||
+ | .Select(PingSites) | ||
+ | .ToList(); | ||
+ | | ||
+ | foreach (var response in responses) | ||
+ | { | ||
+ | Console.WriteLine(response.Address + " " + response.Status + " " + response.RoundtripTime); | ||
+ | } | ||
+ | | ||
+ | Console.ReadLine(); | ||
+ | } | ||
+ | |||
+ | private static PingReply PingSites(string websiteName) | ||
+ | { | ||
+ | Ping ping = new Ping(); | ||
+ | return ping.Send(websiteName); | ||
+ | } | ||
</ | </ | ||
developpement/dotnet/csharp/introduction.txt · Dernière modification : 2023/10/06 05:06 de sgariepy