IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

[Performance] Différence entre List<T> et Collection<T>


Sujet :

Framework .NET

  1. #1
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut [Performance] Différence entre List<T> et Collection<T>
    Bonjour tout le monde!

    Voilà, je suis dans une grande campagne de Code Analysis et il y a une règle qui me dit de ne pas exposer de List<T> dans des méthodes publiques.
    Alors, ok, je comprend bien pourquoi il vaut mieux éviter, mais dans mon cas, pour être CodeAnalysis compliant, il faudrait que je remplace mes List par des Collection.

    J'aimerais simplement savoir s'il y a une différence de performance entre l'une et l'autre niveau temps d'accès, etc... ? (sachant que mon code est un peu dans un endroit sensible et que je voudrait pas que cela ralentisse mon programme.)


    Merci,
    Eric.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Perso, je préfère tout de même exposer une IList<T> que List<T>.

    Pour les méthodes publiques, le fait d'utiliser ICollection<T> empechera une éventuelle manipulation (insert / remove) que pourrait permettre une liste.
    On contraint donc à copier la Collection dans une nouvelle liste si on veut la manipuler.

    Methodes et Propriétés sont sensiblement la même chose techniquement, mais on s'attend à pouvoir manipuler une Propriété : donc pour moi une liste est plus naturelle dans ce cas.

    Mais dans l'idéal -ca dépends du besoin-, il vaut mieux s'orienter vers IEnumerable<T> :
    http://msdn2.microsoft.com/fr-fr/library/bb469885.aspx

    le yield return est vraiment un truc puissant

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Fais des tests de performance entre les 2 collections

    Toutes les collections implémentent IEnumerable<T> même les simples tableaux comme des tableaux d'entiers

  4. #4
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut
    Merci à vous!
    Effectivement, le IEnumerator à l'air plutôt pas mal...

    Je vais continuer mes tests!

    Eric.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle différence entre liste, array et hash ?
    Par ram-0000 dans le forum Langage
    Réponses: 8
    Dernier message: 17/02/2014, 08h24
  2. Différences entre Dropdonw combo et Dropdonw List
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/12/2008, 14h51
  3. Différences entre liste et tableau?
    Par fayred dans le forum Langage
    Réponses: 4
    Dernier message: 17/07/2008, 14h24
  4. Différence entre FB 1.5 et FB 2.0 (performances)
    Par eponette dans le forum Débuter
    Réponses: 2
    Dernier message: 16/11/2007, 23h08
  5. la différence entre élement liste et une lov
    Par rara_rara dans le forum Oracle
    Réponses: 2
    Dernier message: 04/10/2006, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo