Qu’est-ce qu’une requête parallèle ?
De nombreux aspects d’une requête PLINQ sont similaires aux requêtes LINQ vers Objets non parallèles. Comme les requêtes LINQ séquentielles, les requêtes PLINQ effectuent des opérations sur toute source de données IEnumerable ou IEnumerable en<T> mémoire et diffèrent l’exécution, c’est-à-dire qu’elles ne commencent à s’exécuter qu’une fois la requête énumérée. La principale différence est que PLINQ essaie de tirer le meilleur parti de tous les processeurs de votre système. La méthode consiste à partitionner la source de données en fragments puis à effectuer des requêtes parallèles sur plusieurs processeurs pour chaque fragment sur un thread de travail distinct. Dans de nombreux cas, l’exécution parallèle signifie que les requêtes s’exécutent beaucoup plus rapidement.
Avec l’exécution parallèle, PLINQ peut améliorer significativement les performances (par rapport à l’ancien code pour certains types de requêtes), souvent en ajoutant simplement des opérations de requête AsParallel à la source de données. Cependant, le parallélisme peut introduire sa propre complexité, donc toutes les opérations de requête ne s’exécutent pas plus rapidement dans PLINQ. En fait, le parallélisme ralentit certaines requêtes. Il est donc important de comprendre comment des problèmes tels que le tri affectent les requêtes parallèles. Pour plus d’informations, voir Comprendre l’accélération dans PLINQ.
Exemple simple
Pour 10 000 données de la collection, le code est le suivant :
Autres fonctionnalités utilisées par PLINQ
1. En utilisant AsSequential, si vous ne souhaitez pas utiliser de requêtes parallèles dans le processus, vous pouvez utiliser cette fonctionnalité pour restaurer en requêtes séquentielles.
2. En utilisant AsOrdered, comme PLINQ s’exécute en parallèle, les résultats peuvent ne pas être dans l’ordre, ce qui peut être interrogé en ajoutant la méthode AsOrdered.
3. Utiliser WithDegreeOfParallelism, cette propriété peut définir le nombre de CUPs en parallèle sur l’ordinateur.
Note de la scène
Dans de nombreux cas, les requêtes peuvent être parallélisées, mais la surcharge de la configuration des requêtes parallèles peut l’emporter sur les gains de performance.Si la requête n’effectue pas un grand nombre de calculs, ou si la source de données est petite, la requête PLINQ peut être plus lente qu’une requête séquentielle LINQ vers objets。 Vous pouvez utiliser l’analyseur de performance parallèle dans Visual Studio Team Server pour comparer les performances de différentes requêtes, identifier les goulots d’étranglement de traitement et déterminer si les requêtes s’exécutent en parallèle ou séquentiellement.
Référence:La connexion hyperlientérée est visible.
|