Performance entre ArrayList et une collection personalisé

[Résolu]
Signaler
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016
-
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016
-
Bonjour,
j'aimerai avoir un avis fiable sur la différence de performance entre une ArrayList et une classe héritant de CollectionBase.

Sachant que l'ArrayList contient d'autre Arraylist et que la collection obéira au même shémas.

Je vous remercie de m'expliquer la différence de perfomance s'il y a lieu.

6 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Salut,

La collection fortement typée basée sur CollectionBase est plus là pour :
- "sécuriser" un peu en n'exposant que les fonctionnalité souhaités et en vérouillant le type (tant classe qu'interface etc) d'élément qui peuvent être ajoutés
- améliorer la lisibilité et la comprehension du code "client" en lui même, en évitant d'avoir les casts dans celui ci
que pour changer les choses niveau performance.
Pour celà il faudrait sans doute redescendre d'un niveau et fournir une classe implémentant au moins les interfaces IList, ICollection et IEnumerable.
En gros, refaire l'ArrayList en la typant en en gérant le tableau interne directement dans le type voulu.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
CollectionBase ?? Que de bons vieux souvenirs
Dans le framework 2, on utilise maintenant des Generics... Le gros avantages c'est que tu as des collections typées (type safe) et que tu n'es pas tout le temps obligé de caster (voire boxer) comme c'était le cas avec les ArrayList et autre CollectionBase...

Tu peux faire un petit test, tu verras certainement rapidement la différence en une ArrayList et un Generics...

<hr />
-Blog-
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

Merci beaucoup pour la précision au niveau de frame work 2.
Malheuresement, suite à l'oublie d'une présicion de ma part, je suis sous le Frwk 1.1.
Donc à partir de là quelqu'un serait me spécifier laquelle des solutions est la plus rapide ?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Si mes souvenirs sont bons, CollectionBase travail avec une ArrayList en interne, donc vraisemblablement que les performences sont +/- identiques. Le mieux est encore de faire un petit bench pour avoir des certitudes....

<hr />
-Blog-
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

T'es souvenir sont relativement exacte, réflector m'a permis de voir qu'en faite CollectionBase contient une propriété nommé "InnerList" qui n'est autre qu'une .......... ARRAYLIST.
En faite, la collection (classe héritant de collection base) wrappe les méthodes d'une arraylist.
Donc, normalement, l'Arraylist reste plus performante pourtant .....
C'est fait une appli qui charge 1000 instance de d'un classe personalisé (Contenant une chaine taille à peu près indentique, une entier, une image 20*20).
Les perf semble être meilleur coté Arraylist en chargement, mais coté accès c'est la collection qui l'emporte. Mais les perf ne différent pas des masses entre elles.

Bref, à moin qu'un spécialiste me donne une réponse précise et fondé je reste sur ton avis et celui du prog c'est à dire ......

C'est kif kif ;)
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

Merci cocq,

à chaque fois j'oublie l'optimisation de par les interfaces. Pourtant tu me l'avais déjà dit (...).
Enfin, merci beaucoup pour cette réponse.
Je vais construire cette classe quand j'aurais un moment et peut être la poster sur le forum. Tu me donneras ton avis.
Bon Week.

Rodrigue