README.md 5.9 KB
Newer Older
ARDUIN PAUL's avatar
ARDUIN PAUL committed
1
2
# PERFORMANCES
## Nydal El-Kabir & Paul Arduin
3

ARDUIN PAUL's avatar
ARDUIN PAUL committed
4
Etude des performances pour les implémentations de listes chainées, HashMap et tableaux en C#
ARDUIN PAUL's avatar
ARDUIN PAUL committed
5
Respectivement progList.cs progHash.cs, progTab.cs
6

ARDUIN PAUL's avatar
ARDUIN PAUL committed
7
8
9
10
11
12
13
Nous avons testé plusieurs de leur fonctionnalités :
  - Leur remplissage .
  - La recherche d'une valeur.
  - La suppression d'une valeur.
  - L'ajout de valeurs à des positions aléatoires.
  - La suppression de valeurs à des positions aléatoires.

14
  Leur unique paramètre est la taille des données des programme (100000000, 150000000, 200000000 et 265827477), et le paramètre exploré est le temps d'éxécution.
ARDUIN PAUL's avatar
ARDUIN PAUL committed
15
16

  Tous les tests ont été exécutés 5 fois chacuns.
17

ARDUIN PAUL's avatar
ARDUIN PAUL committed
18
19
![exectime](ProjetW4b/ProjetW4b/res/)

GOSSA JULIEN's avatar
GOSSA JULIEN committed
20
21
## Plateforme de test

ARDUIN PAUL's avatar
ARDUIN PAUL committed
22
23
24
25
Serveur Troglo :
  - 32 Processeurs GenuineIntel
  - Intel(R) Xeon(R) CPU E5-2630L v3 @ 1.80GHz
  - 8 Coeurs
GOSSA JULIEN's avatar
GOSSA JULIEN committed
26

27
## Résultats préliminaires
ARDUIN PAUL's avatar
ARDUIN PAUL committed
28
29
30
31
### Remplissage (Pour Tableaux/ListesChainées/HashMaps)

![exectime](ProjetW4b/ProjetW4b/res/Ajout_Valeurs.PNG)

ARDUIN PAUL's avatar
ARDUIN PAUL committed
32
33
34
On peut constater que :
  - Le temps d'éxécution pour la liste Chainée est largement plus grand que celle des HashMap et des Tableaux et semble exponentiel.
  - Plus la taille de la liste chainée est grande, plus la dispersion semble l'être.
35

ARDUIN PAUL's avatar
ARDUIN PAUL committed
36
### Remplissage (Pour Tableaux/HasMaps)
37

ARDUIN PAUL's avatar
ARDUIN PAUL committed
38
![exectime](ProjetW4b/ProjetW4b/res/Ajout_T_HM.PNG)
GOSSA JULIEN's avatar
GOSSA JULIEN committed
39

ARDUIN PAUL's avatar
ARDUIN PAUL committed
40
41
42
On teste les temps d'éxécutions entre les tableaux et les HasMaps pour mieux voir leur évolution.
On peut constater que :
  - Le temps d'éxécution pour les HashMaps est un peu plus de 3x plus grande que celle des Tableaux
ARDUIN PAUL's avatar
ARDUIN PAUL committed
43
44
  - Le temps d'éxécution pour les HashMaps ne semble pas être linéaire mais plus aléatoire.
  - Le temps d'éxécution pour les tableaux semble être linéaire.
ARDUIN PAUL's avatar
ARDUIN PAUL committed
45
  - La dispersion pour les Tableaux est beaucoup plus faible
GOSSA JULIEN's avatar
GOSSA JULIEN committed
46

ARDUIN PAUL's avatar
ARDUIN PAUL committed
47
### Recherche (Pour Tableaux/ListesChainées/HashMaps)
GOSSA JULIEN's avatar
GOSSA JULIEN committed
48

ARDUIN PAUL's avatar
ARDUIN PAUL committed
49
![exectime](ProjetW4b/ProjetW4b/res/Recherche_Valeur.PNG)
GOSSA JULIEN's avatar
GOSSA JULIEN committed
50

ARDUIN PAUL's avatar
ARDUIN PAUL committed
51
52
53
54
On peut constater que :
  - Le temps d'éxécution pour la liste Chainée est largement plus grand que celle des HashMap et des Tableaux et semble toujours un peu exponentiel.
  - Plus la taille de la liste chainée est grande, plus la dispersion semble encore l'être.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
55
### Recherche (Pour Tableaux_Hashmaps)
GOSSA JULIEN's avatar
GOSSA JULIEN committed
56

ARDUIN PAUL's avatar
ARDUIN PAUL committed
57
![exectime](ProjetW4b/ProjetW4b/res/Recherche_T_HM.PNG)
GOSSA JULIEN's avatar
GOSSA JULIEN committed
58

ARDUIN PAUL's avatar
ARDUIN PAUL committed
59
60
61
62
63
64
65
On teste les temps d'éxécutions entre les tableaux et les HasMaps pour mieux voir leur évolution.
On peut constater que :
  - Le temps d'éxécution pour les HashMaps est un peu plus de 3x plus grande que celle des Tableaux
  - Le temps d'éxécution pour les HashMaps ne semble pas être linéaire mais plus aléatoire.
  - Le temps d'éxécution pour les tableaux semble être moins linéaire que pour le remplissage.
  - La dispersion pour les Tableaux est toujours beaucoup plus faible.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
66
### Suppression d'une valeur (Pour Tableaux/ListesChainées/HashMaps)
GOSSA JULIEN's avatar
GOSSA JULIEN committed
67

ARDUIN PAUL's avatar
ARDUIN PAUL committed
68
69
![exectime](ProjetW4b/ProjetW4b/res/Suppression_Valeurs.PNG)

ARDUIN PAUL's avatar
ARDUIN PAUL committed
70
71
72
On peut constater que :
  - Le temps d'éxécution pour la liste Chainée est largement plus grand que celle des HashMap et des Tableaux et semble moins constant et plus illogique, il en est de même pour la dispersion.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
73
74
75
76
### Suppression d'une valeur (Pour Tableaux_Hashmaps)

![exectime](ProjetW4b/ProjetW4b/res/Suppression_T_HM.PNG)

ARDUIN PAUL's avatar
ARDUIN PAUL committed
77
78
79
80
81
82
83
On teste les temps d'éxécutions entre les tableaux et les HasMaps pour mieux voir leur évolution.
On peut constater que :
  - Le temps d'éxécution pour les HashMaps est 5x plus grande que celle des Tableaux
  - Le temps d'éxécution pour les HashMaps ne semble pas être linéaire mais plus aléatoire (comme d'habitude) avec une tendance logarithmique.
  - Le temps d'éxécution pour les tableaux semble à nouveau plus linéaire.
  - La dispersion pour les Tableaux est toujours beaucoup plus faible mais augmente avec la taille.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
84
85
86
87
### Ajout d'une valeur à une position aléatoire (Pour Tableaux/ListesChainées/HashMaps)

![exectime](ProjetW4b/ProjetW4b/res/Ajout_Valeurs_Aleatoires.PNG)

ARDUIN PAUL's avatar
ARDUIN PAUL committed
88
89
90
91
On peut constater que :
  - Le temps d'éxécution pour la liste Chainée est encore et toujours largement plus grand que celle des HashMap et des Tableaux et semble plus exponentiel
  - Plus la taille est grande, plus la dispersion tend à l'être.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
92
93
94
95
### Ajout d'une valeur à une position aléatoire (Pour Tableaux_Hashmaps)

![exectime](ProjetW4b/ProjetW4b/res/Ajout_Valeurs_T_HM.PNG)

ARDUIN PAUL's avatar
ARDUIN PAUL committed
96
97
98
99
100
101
102
On teste les temps d'éxécutions entre les tableaux et les HasMaps pour mieux voir leur évolution.
On peut constater que :
  - Le temps d'éxécution pour les HashMaps est 3x plus grande que celle des Tableaux
  - Le temps d'éxécution pour les HashMaps ne semble pas être linéaire mais plus logarithmique. logarithmique.
  - Le temps d'éxécution pour les tableaux semble un peu moins linéaire.
  - La dispersion pour les Tableaux est toujours beaucoup plus faible que pour les HashMaps.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
103
104
105
106
### Suppression d'une valeur à une position aléatoire (Pour Tableaux/ListesChainées/HashMaps)

![exectime](ProjetW4b/ProjetW4b/res/Suppression_Valeurs_Index.PNG)

ARDUIN PAUL's avatar
ARDUIN PAUL committed
107
108
109
110
On peut constater que :
  - Le temps d'éxécution pour la liste Chainée est énorme par rapport au deux autres et les écrase complètement.
  - Il en est de même pour la dispersion.

ARDUIN PAUL's avatar
ARDUIN PAUL committed
111
112
113
### Suppression d'une valeur à une position aléatoire (Pour Tableaux_Hashmaps)

![exectime](ProjetW4b/ProjetW4b/res/Delete_Valeurs_T_HM.PNG)
ARDUIN PAUL's avatar
ARDUIN PAUL committed
114
115
116
117
118
119
120
121

On teste les temps d'éxécutions entre les tableaux et les HasMaps pour mieux voir leur évolution.
On peut constater que les courbes sont quasiment les mêmes que pour l'ajout de valeur à une position aléatoire.


## Conclusion

Les listes chainées semblent être complètement dépassées en terme de rapidité par rapport aux deux autres concurrents avec des temps d'éxécutions faramineux et des dispersions très grandes. Les HashMaps elles, sont plus rapides mais sont détronées par les Tableaux que cela soit en terme de temps d'éxécution ou de dispersion même si ces dernières semblent généralement augmenter de manière logarithmique alors que les temps d'éxécution pour les Tableaux sont constants.