IEnumerable<T>.Any() vs. IEnumerable<T>.Count() != 0

An english version is available here .

Après avoir lu ce post d'Eric Lippert, je me suis rappelé que dans l'exemple de ce post, j'utilise IEnumerable<T>.Count() ou je ne me sers pas vraiment la valeur de retour, et du coup, mon code énumère la totalité de la collection inutilement.

J'aurais pu utiliser IEnumerable<T>.Any(), qui après avoir regardé le code IL, démarre simplement l'énumération et s'arrête juste après un élément puis retourne true, ou si il n'y a rien, retourne false.

Bien plus efficace, à défaut d'utiliser PLinq !

Publié dimanche 11 mai 2008 00:15 par jay
Classé sous , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: IEnumerable<T>.Any() vs. IEnumerable<T>.Count() != 0 @ mardi 13 mai 2008 12:41

On a l'habitude de tout le temps utiliser .Count de ICollection, mais il faut faire attention avec LINQ car la méthode d'extension .Count() pour IEnumerable a une complexité linéaire et non constante comme c'est le cas avec ICollection (toute l'énunmeration est itérée).

RaptorXP

# re: IEnumerable<T>.Any() vs. IEnumerable<T>.Count() != 0 @ jeudi 15 mai 2008 08:35

RaportXP: D'accord Any est bien plus optimal que Count dans ce cas là, mais si Enumerable.Count () prend en argument un objet qui implémente ICollection`1, il va retourner le Count de ICollection`1, au lieu d'itérer sur tous les éléments, donc Enumerable.Count n'est pas toujours O(n). Cela dit rien n'oblige l'implémentation de ICollection`1.Count d'être O(1) par contre.

Jb Evain


Les 10 derniers blogs postés

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01

- Office 365: Script PowerShell pour supprimer des comptes utilisateur de collections de sites SharePoint Online par Blog Technique de Romelard Fabrice le 11-19-2018, 16:47

- Retrouvez-moi aux Microsoft experiences18 ! par Blog de Jérémy Jeanson le 11-06-2018, 22:25

- Office 365: Script PowerShell pour extraire les Teams associés à un utilisateur spécifié par Blog Technique de Romelard Fabrice le 11-06-2018, 13:37

- Office 365: Extraire les pages publiées dans un site SharePoint Online de publishing en CSV par Blog Technique de Romelard Fabrice le 11-06-2018, 11:04

- Office 365: Comment créer un jeu de Pages Modernes dans un Modern Site SharePoint Online en utilisant PowerShell depuis un fichier CSV par Blog Technique de Romelard Fabrice le 10-17-2018, 12:50

- Office 365: Comment Utiliser les Modern Pages dans un Site Intranet SharePoint basé sur le Publishing site par Blog Technique de Romelard Fabrice le 10-16-2018, 15:34

- Office 365: Comment changer le nom “Auteur” dans les pages modernes d'un Modern Site SharePoint Online par Blog Technique de Romelard Fabrice le 10-16-2018, 15:07

- Reprise des articles Codes-Sources de 2011 à 2013 par Blog de Jérémy Jeanson le 08-21-2018, 16:08

- Office 365: Modifier les jeux de couleur dans les Thèmes des pages classiques de SharePoint Online par Blog Technique de Romelard Fabrice le 08-08-2018, 17:27