La propriété Count
est O (1), car le nombre est stocké dans la classe, il n'est pas découvert en comptant réellement les enregistrements.
Vous avez raison de dire que la documentation ne contient pas beaucoup d'informations sur les performances de cette classe, vous trouverez plus d'informations sur les performances pour la classe List<T>
par exemple. Vous verriez généralement ce que fait la propriété ou la méthode pour déterminer les caractéristiques de performance.
Une indication dans ce cas est que Count
est une propriété, ce qui signifie généralement qu'il s'agit d'une opération O (1). A titre de comparaison, IEnumerable<T>.Count
est une méthode au lieu d'une propriété, car elle parcourt les éléments pour les compter.
Eh bien, semble assez facile à tester. Temps combien de temps cela prend pour une collection de taille 1, et pour une collection de taille 1 000 000. (Évidemment, vous aurez besoin de millions d'appels moyennés pour que cela ait une signification quelconque.) S'ils sont à peu près les mêmes, c'est clairement O (1), si le plus grand ensemble de données prend plus de temps, ce n'est pas O (1). Cela dit, je suis raisonnablement confiant que c'est O (1). – Servy
Je me demande s'il n'y a pas de convention dans C# où Count() pourrait être O (n) et Count serait O (1). – nicolas
Eh bien, une propriété, de par sa conception, ne devrait pas faire beaucoup de calculs complexes, elle devrait simplement retourner rapidement une valeur, donc avoir une propriété soit O (n) violerait la convention. Cela dit, il existe des méthodes 'Count()' qui sont O (1), et elles ne violent aucune convention. – Servy