diff --git a/README.md b/README.md index 2a8e595594f3125e600551b003055611fadec83a..cd17309d5a2256762719ac7bef8069d22adb547f 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 0000000000000000000000000000000000000000..08e0bb7f8d06d0bb3cefafb0538c3ff023824c4e --- /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 0000000000000000000000000000000000000000..c692d22072fd2dad56110f864b4393ed43d79762 --- /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 0000000000000000000000000000000000000000..1c87b6eb3fc4763de22ad32e241d7924d1528b4b --- /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 +