Maison >développement back-end >C++ >L'ordre des méthodes d'extension LINQ (par exemple, Where et FirstOrDefault) a-t-il un impact sur les performances ?

L'ordre des méthodes d'extension LINQ (par exemple, Where et FirstOrDefault) a-t-il un impact sur les performances ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-11 10:10:41440parcourir

Does the Order of LINQ Extension Methods (e.g., Where and FirstOrDefault) Impact Performance?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn