Newer
Older
Nous allons comparer les différences de performances sur 3 opérations communes à différentes structures de données (tableaux, LinkedList et ArrayList).
Nous allons également réimplementer ces opérations nous même et à nouveau comparer les différences de performance.
Nous avons choisi d'utiliser le language objet java.
- Ajout d'un élement à une certaine position (n'exite pas pour les tableaux standards, add() pour les LinkedList / ArrayList)
- Suppression d'un élement à une certaine position(n'existe pas pour les tableaux standards, remove() pour les LinkedList / ArrayList)
- Accès d'un élement à une certaine position(tab[position] pour les tableaux, get() pour les LinkedList / ArrayList)
Voila notre diagramme de classe explicitant l'organisation objet de l'application.
Toutes les structures de données vont implémenter une Interface *"Struture"* que nous allons créer et qui contiendra les opérations choisies.
Dans le package **Standard**, nous appelerons juste les bonnes méthodes déja présentes dans les libraires standards et dans
le package **Perso** nous réimplementerons par nous même ces opérations.
L'application est divisée en 2 parties : les scripts shells qui appellent nos differentes classes de Main compilées en java.
Il existe un script shell pour chaque graphique et celui-ci appelle les classes Main choisies avec la commande "/usr/bin/time -f "%U,%M"
[code source des scripts shell](https://git.unistra.fr/jdubocage/P4a/-/tree/master/Scripts_Shell)
[code source des fichiers Java](https://git.unistra.fr/jdubocage/P4a/-/tree/master/P4A/src/p4a)
```
Description de l'application et des arguments
```
### Environnement de test
Tout les tests ont été réalisés sur le serveur troglo.iutrs.unistra.fr
Description de la plateforme de test (extrait de /proc/cpuinfo)
processor : 1
vendor_id : GenuineIntel
cpu family : 15
model : 6
model name : Common KVM processor
cpu MHz : 2095.078
cache size : 16384 KB
siblings : 2
cpu cores : 2
clflush size : 64
cache_alignment : 128
address sizes : 40 bits physical, 48 bits virtual
Voici la démarche que nous avons suivi pour génerer des données puis produire des graphiques :
1. Compiler les fichiers source dans le dossier P4A\src\p4a avec la commande javac ./*.java
2. Choisir le script shell de son choix et le copier dans le dossier P4A\src
3. Executer ce script shell pour génerer puis enregistrer les données avec la commande ./nomScript.sh > perf.csv
4. Executer la commande R pour pouvoir générer les graphiques avec ces données
5. Charger la librairie ggplot2 (commande : library(ggplot2)) puis charger les données : perf <- read.csv("perf.csv")
6. Génerer le graphique avec la commande ggplot(perf, arguments) puis exportation avec ggsave("nomGraphique.png")
Chaque script shell réalise le test sur les différentes structures de données 3 fois (parametrable en changeant la valeur de la variable TESTS).
Le nombre de fois que l'opération testée est executée est également parametrable via la variable NBOPERATIONS.
Cette variable est une séquence de plusieurs nombre permettant d'obtenir plusieurs points sur les graphiques.
### Consommation CPU
### Ajout de Valeur
| | Tete de liste | Queue de liste |
| ----------------------------------| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| |  |  |
### Suppression de Valeur
| | Tete de liste | Queue de liste |
| ----------------------------------| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| |  |  |
### Assignation de valeur (tableau)
<img src="./graphiques/CPU_Tab_Assign.png" width="700"/>
### Accès de Valeur aleatoire
<img src="./graphiques/CPU_LinkedList_ArrayList_Tab_Get_Random.png" width="700"/>
### Ajout de Valeur
| | Tete de liste | Queue de liste |
| ----------------------------------| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| |  |  |
### Suppression de Valeur
| | Tete de liste | Queue de liste |
| ----------------------------------| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| |  |  |
### Assignation de valeur (tableau)
<img src="./graphiques/Mem_Tab_Assign.png" width="700"/>
### Accès de Valeur aleatoire
<img src="./graphiques/Mem_LinkedList_ArrayList_Tab_Get_Random.png" width="700"/>
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
### Discussion des résultats préalables
Explications précises et succinctes sur ce que les limites des résultats
préalables et ce qu'ils ne permettent pas de vérifier.
## Etude approfondie
### Hypothèse
Expression précise et succincte d'une hypothèse.
### Protocole expérimental de vérification de l'hypothèse
Expression précise et succincte du protocole.
```
Suite des commandes, ou script, à exécuter pour produire les données.
```
### Résultats expérimentaux
### Analyse des résultats expérimentaux
### Discussion des résultats expérimentaux
## Conclusion et travaux futurs