Bonjour à tous,
Je travaille sur la synchronisation en Java et j'ai regardé que par exemple, la collection Vector est un type synchronisé alors que ArrayList n'en est pas un.
Pour les comparer j'utilise l'algorithme suivant :
Ce programme me permet de chronometrer le temps d'ajout et de suppression d'entiers dans un vector et une arrayList.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class CoutSynchronisation { final static int TAILLE = 100000; public static void main(String[] args) { System.out.println("Cout de la synchronisation"); parcoursVector(); parcoursArrayList(); } private static void parcoursVector() { System.out.println("Vector est un type synchronisé par défaut"); Vector<Integer> vector = new Vector<Integer>(); long start1 = System.currentTimeMillis(); for (int i = 0; i < TAILLE; i++) { vector.add(i); } for (int i = 0; i < TAILLE; i++) { vector.remove(TAILLE-i-1); } long end1 = System.currentTimeMillis(); long duree = end1 - start1; System.out.println("duree : " + duree + " ms"); } private static void parcoursArrayList() { System.out.println("ArrayList est un type non synchronisé"); ArrayList<Integer> arrayList = new ArrayList<Integer>(); long start2 = System.currentTimeMillis(); for (int i = 0; i < TAILLE; i++) { arrayList.add(i); } for (int i = 0; i < TAILLE; i++) { arrayList.remove(TAILLE-i-1); } long end2 = System.currentTimeMillis(); long duree = end2 - start2; System.out.println("duree : " + duree + " ms"); } }
Le probleme c'est que les resultats ne sont pas ceux que j'attendais.
Je pensais trouver l'arrayList plus rapide que le vector alors que la les resultats me semblent tres aleatoires.
Merci de m'eclairer à ce sujet. Comment faire pour prouver que la synchronisation a un coût.
Partager