OVH Cloud OVH Cloud

Collections performantes

1 réponse
Avatar
xiii29
Bonjour,

Je souhaiterais savoir si la cr=E9ation d'une collection=20
fortement typ=E9 permet de gagner en performance ou si une=20
arraylist suffit !

Merci !

1 réponse

Avatar
Zazar
Bonjour,

Je souhaiterais savoir si la création d'une collection
fortement typé permet de gagner en performance ou si une
arraylist suffit !



Ca dépend de comment vous implémentez votre collection.

Si vous encapsulez un ArrayList, alors les performances seront sensiblement
les même dans le cas général mais seront moins bonnes dans certains cas.
Exemple : vous avez une classe C1, une classe C2 héritant de C1 et une
collection fortement typée utilisant des objets de type C1. Vous pouvez bien
évidemment ajouter des objets de type C2 dans votre collection, et les
récupérer. Mais si pour une raison ou une autre, vous avez besoin de
récupérer l'objet puis de le caster en C2, alors les performances seront
dégradées (dans cette situation l'objet subira un cast en C1 puis un cast en
C2 alors qu'il aurait été directement casté en C2 avec un ArrayList de
base). Remarque : ce ne sera plus vrai avec les génériques de la version 2.0
(la phase de cast en C1 disparaîtra).

Cependant si vous recréez une collection fortement typée à partir de 0 (en
gros vous n'encapsulez pas de collection travaillant sur les object mais
vous utilisez un tableau de C1 par exemple), alors les performances seront
identiques (en supposant que vous optimisiez votre collection correctement)
voire nettement supérieures si vous travaillez sur un type valeur (vous
éliminez toutes les phases de boxing/unboxing).

--
Zazar