From 7ce9b64a5ce15950ef8949b7be6c8e930d02ab57 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin.marchal@etu.unistra.fr> Date: Wed, 25 Mar 2020 21:12:20 +0100 Subject: [PATCH] Fin Readme + nettoyage et fixe --- README.md | 33 +++++++++++++++++++++++++-------- graphs/prefAnalyse.R | 22 ++++++++++++++++++++++ resultsAnalyse.dat | 28 ++++++++++++++++++++++++++++ testAnalyse.sh | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 116 insertions(+), 8 deletions(-) create mode 100644 graphs/prefAnalyse.R create mode 100644 resultsAnalyse.dat create mode 100644 testAnalyse.sh diff --git a/README.md b/README.md index 2a8e595..cd17309 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ [Grille d'évaluation P4a](https://docs.google.com/spreadsheets/d/1x72glVEQHPx56Wr8G0RNQgfQXGX6xCsjms_6b7J6si0/edit?usp=sharing ) -## Groupe +## Groupe * BOCH Antoine -* MARCHAL Benjamin +* MARCHAL Benjamin ## Problème @@ -25,7 +25,7 @@ Notre programme nous permet donc de tester plusieurs variantes afin de détermin Pour réaliser ces observations j'ai donc choisi trois types de structure: -* ArrayList +* ArrayList * LinkedList * Vector @@ -44,11 +44,15 @@ De plus, le nombre d'itérations de la valeur ajoutée et la taille de la struct [Code source de l'application](https://git.unistra.fr/antoine.boch/P4a/-/blob/master/src/Main.java) +``` +Usage : java Program "Structure" "Test" <Occurence> <TailleStruct> +``` + #### Description de l'application et des arguments L'application permet d'effectuer plusieurs tests sur différentes structures de données. Ces tests sont notamment diverses opérations effectuées un certain nombre de fois. -En ce qui concerne les arguments, on prend en compte : +En ce qui concerne les arguments, on prend en compte : 1. Le type de la structure utilisée * ArrayList @@ -78,6 +82,10 @@ Cache size : 20480 KB Description de la démarche systématique et de l'espace d'exploration pour chaque paramètres. +``` +./test.sh |tee results.dat + -> le script R se lance à la fin du bash. +``` [Script Test.sh](https://git.unistra.fr/antoine.boch/P4a/-/blob/master/Tests.sh) @@ -111,7 +119,7 @@ Donc pour l'instant, en utilisant les **Integer,** la **LinkedList** est la plus ### Discussion des résultats préalables Actuellement les résultats précédents permettent de voir graphiquement de grandes différences de temps d'exécutions et des légères différences dans les **consommations de mémoires**, mais si l'on ré-exécute le programme à nouveau on pourrait tomber sur d'autres résultats (changements de quelques microsecondes). -De plus ces tests n'ont pas de comparatifs avec d'autres utilisations de types, on utilise que des **Integer**. +De plus ces tests n'ont pas de comparatifs avec d'autres utilisations de types, on utilise que des **Integer**. Enfin, les méthodes sur ces structures ne sont pas si variées et n'utilisent principalement que l'ajout d'éléments. Il faudrait aussi faire des tests avec l'accès aux données et la suppression sans ajouts avant. Ces résultats permettent néanmoins de donner une première image de ces structures, mais ne permettent pas de rééllement dire que telle structure est plus optimisée, à part pour certaines tâches. @@ -124,13 +132,22 @@ Dans l'analyse précédente on a vu comment réagissaient les différentes struc ### Protocole expérimental de vérification de l'hypothèse + +``` +./testAnalyse.sh | tee resultsAnalyse.dat +cd graph +./prefAnalyse.R +``` + +**Remarque :** Il faut penser a prendre la classe ArrayListl2 + [Script Test.sh](https://git.unistra.fr/antoine.boch/P4a/-/blob/master/Tests.sh) -**Script sh** qui met en place chaque paramètre et appel les fonctions du programme java, pour sortir le temps d'exécution, l'utilisation de la mémoire, le nombre d'itérations et les tailles de structures, dans un fichier "result.dat". Appelé avec la commande : **./Tests.sh | tee results.dat ** dans le dossier P4a. +**Script sh** qui met en place chaque paramètre et appel les fonctions du programme java, pour sortir le temps d'exécution, l'utilisation de la mémoire, le nombre d'itérations et les tailles de structures, dans un fichier "result.dat". Appelé avec la commande : **./testAnalyse.sh | tee resultsAnalyse.dat ** dans le dossier P4a. -Puis, appel du **script R** via la commande **./cmdR.R** dans le dossier graphs accessible via **cd graph**, pour exploiter les résultats du fichier "result.dat" graphiquement. +Puis, appel du **script R** via la commande **./prefAnalyse.R** dans le dossier graphs accessible via **cd graph**, pour exploiter les résultats du fichier "result.dat" graphiquement. -[Script Cmd.R](https://git.unistra.fr/antoine.boch/P4a/-/blob/master/graphs/cmdR.R) +[Script prefAnalyse.R](https://git.unistra.fr/antoine.boch/P4a/-/blob/master/graphs/prefAnalyse.R) ## Résultats expérimentaux diff --git a/graphs/prefAnalyse.R b/graphs/prefAnalyse.R new file mode 100644 index 0000000..08e0bb7 --- /dev/null +++ b/graphs/prefAnalyse.R @@ -0,0 +1,22 @@ +#!/usr/bin/Rscript --slave + +library(ggplot2) + +perf <- read.table("../resultsAnalyse.dat", header = TRUE) + +ggplot(perf,aes(x=occu, y=temps, color=struct))+ + geom_point()+geom_smooth()+ + ggtitle("Le temps sur les opérations ")+ + xlab("Occurence")+ + ylab("Temps")+ + facet_grid(rows=vars(struct),cols=vars(test)) +ggsave("allComparaisonTimeAnalyse.png") + +ggplot(perf,aes(x=occu, y=memoire, color=struct))+ + geom_point()+geom_smooth()+ + ggtitle("La mémoire prise par les opérations ")+ + xlab("Occurence")+ + ylab("Memoire")+ + facet_grid(rows=vars(struct),cols=vars(test))+ + ylim(0,100000) +ggsave("allComparaisonMemoireAnalyse.png") \ No newline at end of file diff --git a/resultsAnalyse.dat b/resultsAnalyse.dat new file mode 100644 index 0000000..c692d22 --- /dev/null +++ b/resultsAnalyse.dat @@ -0,0 +1,28 @@ +struct sType test occu temps memoire +ArrayList 50000 addT 5000 0.08 54000 +ArrayList 50000 addT 250000 0.12 57592 +ArrayList 50000 addT 500000 0.12 65644 +ArrayList 50000 addQ 5000 0.06 50980 +ArrayList 50000 addQ 250000 0.11 57612 +ArrayList 50000 addQ 500000 0.11 63676 +ArrayList 50000 Delete 5000 0.06 50832 +ArrayList 50000 Delete 250000 0.11 57696 +ArrayList 50000 Delete 500000 0.13 65748 +ArrayList 250000 addT 5000 0.07 48800 +ArrayList 250000 addT 250000 0.09 59180 +ArrayList 250000 addT 500000 0.15 67340 +ArrayList 250000 addQ 5000 0.10 56104 +ArrayList 250000 addQ 250000 0.10 55444 +ArrayList 250000 addQ 500000 0.11 63968 +ArrayList 250000 Delete 5000 0.06 49116 +ArrayList 250000 Delete 250000 0.11 58484 +ArrayList 250000 Delete 500000 0.12 65880 +ArrayList 500000 addT 5000 0.07 55908 +ArrayList 500000 addT 250000 0.11 57564 +ArrayList 500000 addT 500000 0.11 57524 +ArrayList 500000 addQ 5000 0.07 50916 +ArrayList 500000 addQ 250000 0.11 62708 +ArrayList 500000 addQ 500000 0.09 59732 +ArrayList 500000 Delete 5000 0.06 48912 +ArrayList 500000 Delete 250000 0.11 62712 +ArrayList 500000 Delete 500000 0.11 57568 diff --git a/testAnalyse.sh b/testAnalyse.sh new file mode 100644 index 0000000..1c87b6e --- /dev/null +++ b/testAnalyse.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +type[0]="ArrayList" + +sizeType[0]=100000 +sizeType[1]=500000 +sizeType[2]=1000000 + +occurrence[0]=100000 +occurrence[1]=500000 +occurrence[2]=1000000 + +operationType[0]="addT" +operationType[1]="addQ" +operationType[2]="Delete" + +#type = $1 (type) +#size = $4 taille de la (sizetype) +#operation = $2 (operationType) +#opSize = $3 (occu) + +cd src + +test(){ + echo -n "$1 $4 $2 $3 " 2>&1 + /usr/bin/time -f"\t%U\t%M" java Program $1 $2 $3 $4 2>&1 +} + + +echo "struct sType test occu temps memoire" 2>&1 + +for sType in ${sizeType[*]}; do + for test in ${operationType[*]}; do + for occu in ${occurrence[*]}; do + for struct in ${type[*]}; do + test $struct $test $occu $sType + done + done + done +done + -- GitLab