Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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).
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).