Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vector et rapidité

18 réponses
Avatar
tsalm
Bonjour,

J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
r=E9gui=E8rement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est =E9gal =E0 une boucle for et monVecteur.get(i)?

D'avance merci
TSalm

10 réponses

1 2
Avatar
thomas_escolan
Bonjour,

Vector n'est pas spécialment rapide, car c'est une collection
synchronisée, ce qui est un luxe en environnement monothread. Mais je
ne sais connais pas le détail de ton implémentation.

http://www.javaolympus.com/J2SE/JavaPerformance/JavaCollectionsPerformance. jsp

Tu peux faire des tests sur ta plateforme avec tes objets et le volume
de ton application, c'est sans doute le mieux :

http://www.javalobby.org/java/forums/m91833399.html


Bonjour,

J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est égal à une boucle for et monVecteur.get(i)?

D'avance merci
TSalm


Avatar
Raphael Tagliani
En effet, ce qu'a dit thomas_escolan est vrai, mieux vaut te tourner
vers un ArrayList, par exemple.


wrote:
Bonjour,

Vector n'est pas spécialment rapide, car c'est une collection
synchronisée, ce qui est un luxe en environnement monothread. Mais je
ne sais connais pas le détail de ton implémentation.

http://www.javaolympus.com/J2SE/JavaPerformance/JavaCollectionsPerformance.jsp

Tu peux faire des tests sur ta plateforme avec tes objets et le volume
de ton application, c'est sans doute le mieux :

http://www.javalobby.org/java/forums/m91833399.html



Bonjour,

J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est égal à une boucle for et monVecteur.get(i)?

D'avance merci
TSalm






Avatar
said.rabie
NE JAMAIS UTILISER UN VERTOR
Avatar
Cédric Olmanst
NE JAMAIS UTILISER UN VERTOR


Pourquoi pas ? Si plusieurs threads manipulent ta collection de données,
un Vector est idéal, non ? Dans ce cas, une Arraylist serait
suicidaire et le Vector peut être le meilleur choix.

C'est comme Hashtable vs Hashmap en somme...

Avatar
Raphael Tagliani
Cédric Olmanst wrote:

NE JAMAIS UTILISER UN VERTOR



Pourquoi pas ? Si plusieurs threads manipulent ta collection de données,
un Vector est idéal, non ? Dans ce cas, une Arraylist serait suicidaire
et le Vector peut être le meilleur choix.

C'est comme Hashtable vs Hashmap en somme...
Ah, mais moi je suis totalement d'accord, un veRtor, c'est pas bien :) !



Avatar
thomas_escolan
Non c'est pas bien, il a raison, ça peut même être aussi dangereux
que les vélocirEptor, c'est dire !
:-)


Cédric Olmanst wrote:

NE JAMAIS UTILISER UN VERTOR



Pourquoi pas ? Si plusieurs threads manipulent ta collection de donné es,
un Vector est idéal, non ? Dans ce cas, une Arraylist serait suicida ire
et le Vector peut être le meilleur choix.

C'est comme Hashtable vs Hashmap en somme...
Ah, mais moi je suis totalement d'accord, un veRtor, c'est pas bien :) !





Avatar
alexandre cartapanis
NE JAMAIS UTILISER UN VERTOR


Pourquoi pas ? Si plusieurs threads manipulent ta collection de donné es,
un Vector est idéal, non ? Dans ce cas, une Arraylist serait suicida ire
et le Vector peut être le meilleur choix.

C'est comme Hashtable vs Hashmap en somme...


Non, l'idéal c'est une SynchronizedList (obtenu en faisant
java.util.Collections.synchronizedList()).

--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email


Avatar
thomas_escolan
Bien dit,

C'est d'ailleurs ce que fait... Vector dans sa méthode subList() !
Laquelle méthode ne renvoie donc PAS un Vector. Dingue, non ?


Non, l'idéal c'est une SynchronizedList (obtenu en faisant
java.util.Collections.synchronizedList()).


Avatar
tsalm

NE JAMAIS UTILISER UN VERTOR


Pourquoi pas ? Si plusieurs threads manipulent ta collection de donné es,
un Vector est idéal, non ? Dans ce cas, une Arraylist serait suicida ire
et le Vector peut être le meilleur choix.

C'est comme Hashtable vs Hashmap en somme...


Non, l'idéal c'est une SynchronizedList (obtenu en faisant
java.util.Collections.synchronizedList()).



En tout cas, ça a le mérite d'être clair :-)
Je ne fait pas de multithreading donc ...je vais tout de suite changer
mes Vectors en Collection
Merci à vous !

Tsalm



Avatar
tsalm
et merci Thomas, tes lien sont simplement excellents !
Tsalm
1 2