PLINQ a été ajouté dans le .NET 4.0 Framework en tant qu'extension de LINQ.Qu'est-ce que PLINQ?
- Qu'est-ce que c'est?
- Quels sont les problèmes résolus?
- Quand est-ce approprié et quand non?
PLINQ a été ajouté dans le .NET 4.0 Framework en tant qu'extension de LINQ.Qu'est-ce que PLINQ?
Ceci est un LINQ parallèle. C'est un moyen d'exécuter des requêtes LINQ en parallèle sur des systèmes multi-core/multi-processeurs, afin de les accélérer (espérons-le).
Il y a un bon article à ce sujet dans MSDN Magazine.
Pour les détails et plans, je recommande la lecture des articles sur le Parallel Programming with .NET Team Blog. Ils sont l'équipe implémentant les extensions parallèles, y compris PLINQ.
De Wikipédia Parallel Extensions:
Parallel LINQ (PLINQ) est un moteur d'exécution de la requête concurrente pour LINQ, parallélisation l'exécution des requêtes sur des objets (LINQ to Objects) et les données XML (LINQ to XML) . PLINQ est destiné à exposer le parallélisme des données par l'utilisation de requêtes. Tout calcul sur des objets qui ont été implémentés en tant que requêtes peut être parallélisé par PLINQ. Cependant, les objets doivent implémenter l'interface IParallelEnumerable, qui est définie par PLINQ elle-même. En interne, il utilise TPL pour l'exécution.
extensions parallèles = PLINQ. PLINQ est une petite partie des nouvelles extensions parallèles ajoutées à .NET 4, mais pas, en aucun cas, tout le travail de PFX. –
@Reed Bien sûr. Je faisais simplement un lien vers Wikipedia, qui est le troisième résultat d'une requête Google pour "PLINQ" et a une section sur Parallel LINQ. C'était une réponse triviale à une question triviale. – Greg
C'est une bibliothèque qui vous permet de prendre une requête LINQ normale, de la diviser en tâches plus petites et d'exécuter chaque tâche individuelle sur plusieurs threads en tirant parti des cœurs du processeur.
Il vous permet d'ajouter. AsParallel à votre LINQ pour tenter d'exécuter la requête en utilisant autant de processeurs que possible. Neat, mais vous avez encore besoin de savoir un peu si votre algorithme est "parallélisable" - ce n'est pas magique. Il supprime essentiellement la nécessité de gérer un pool de threads et gère la synchronisation des résultats revenant de chaque thread - normalement sans la bibliothèque des extensions parallèles, vous auriez à le faire manuellement.
Gardez à l'esprit que tout n'a pas de .AsParallel pour LINQ, un bon exemple est DataTable. – Si8
PLINQ est exécuté LINQ en parallèle, c'est-à-dire en utilisant autant de puissance de traitement que vous avez sur votre ordinateur actuel.
Si vous avez un ordinateur avec 2 cœurs comme un processeur dual core, vos opérateurs Language Integrated Query feront le travail en parallèle en utilisant les deux cœurs. En utilisant "seulement" LINQ, vous n'obtiendrez pas autant de performances car les opérateurs Language Integrated Query standard ne vont pas paralléliser votre code. Cela signifie que votre code fonctionnera en série sans tirer parti de tous vos cœurs de processeurs disponibles.
Il existe de nombreux opérateurs de requête PLINQ capables d'exécuter votre code en utilisant des modèles parallèles bien connus.
Jetez un oeil à mon blog dans lequel je montre la vitesse jusqu'à que vous obtenez lorsque vous exécutez une simple requête LINQ en parallèle en utilisant la méthode d'extension AsParallel:
Parallel LINQ (PLINQ) with Visual Studio 2010/2012 - Perf testing
Si vous voulez aller en profondeur en utilisant PLINQ, je vous conseille de lire:
Le magazine MSDN ne contient pas de lien profond vers un article, mais le blog est toujours bon, alors vous obtenez toujours mon vote. –