Ordre des méthodes d'extension LINQ
Source de la question : L'ordre des méthodes d'extension LINQ affecte-t-il les performances ?
Question :
Pourquoi l’ordre des méthodes d’extension LINQ n’affecte-t-il pas de manière significative les performances ? Par exemple, en comparant les deux affirmations suivantes, on pourrait penser que Where
suivi de FirstOrDefault
est plus lent que FirstOrDefault
suivi de Where
:
<code class="language-csharp">hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault(); hugeList.FirstOrDefault(x => x.Text.Contains("10000"));</code>
Réponse :
L'hypothèse selon laquelle Where
suivi de FirstOrDefault
sera plus lent est fausse. Where
Pas besoin de trouver tous les matchs avant d'obtenir le premier match. Il récupère les correspondances à la demande, ce qui signifie que si seule la première correspondance est nécessaire, il s'arrête après avoir trouvé la première correspondance.
Pour illustrer cela, imaginez le scénario suivant :
Trois personnes ont participé :
- A tient un jeu de cartes mélangé.
- B porte une chemise qui dit "Si la carte est rouge".
- C a dit à B : "Donnez-moi la première carte."
B demandera à plusieurs reprises des cartes à A jusqu'à ce que A fournisse un carton rouge. Une fois le premier carton rouge obtenu, il est remis à C et le processus se termine. B n’a pas besoin de continuer à demander des cartons à A après avoir trouvé le premier carton rouge.
De même, dans une instruction LINQ, Where
est comme B, filtrant les cartes (éléments de la liste) pour trouver la première correspondance. Il n'est pas nécessaire de trouver toutes les correspondances avant de renvoyer la première correspondance.
En revanche, si l'ordre des méthodes d'extension est inversé, avec FirstOrDefault
suivi de Where
, la situation est différente. FirstOrDefault
doit récupérer le premier élément, puis Where
doit appliquer son filtre, ce qui impliquera de parcourir tous les éléments en boucle. Ce sera moins efficace que Where
suivi de FirstOrDefault
.
Par conséquent, lors de la détermination de l'impact sur les performances des méthodes d'extension LINQ, il est important de considérer l'ordre dans lequel elles sont appliquées, car cela affectera l'efficacité de l'opération en fonction de la méthode spécifique utilisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!