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
Libérer: 2025-01-11 10:10:41
original
438 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal