Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
......@@ -4,15 +4,27 @@
## Problème
Description du Problème.
Description du Problème :
Description de tous les paramètres exploratoires du problème
Nous allons implémenter 3 opérations communes à différentes structures de données (tableaux, LinkedList et ArrayList) et comparer leurs performances avec leur implémentation standard.
Nous avons choisi d'utiliser le language objet java.
Proposition d'opérations :
- 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)
## Dispositif expérimental
### Organisation objet
Description de l'organisation des classes et interfaces, ou diagramme de classes.
![](UML/diagramme.svg)
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.
### Application
......
UML/diagramme.png

183 KiB

This diff is collapsed.
This diff is collapsed.
Compilation :
(dossier avec sources)
javac ./*.java
cd ..
java nomDossier.nomClasseMain
R
perf <- read.csv("perf.csv")
library(ggplot2)
Comparaison LinkedList perso / standard :
CPU : ggplot(perf, aes(x=Taille,y=CPU, color=as.character(Version))) + geom_point() + geom_smooth(aes(group=Version)) + scale_color_discrete(name="Version") + ggtitle("Consommation CPU en fonction de la taille")
Mem : ggplot(perf, aes(x=Taille,y=Mem, color=as.character(Test))) + geom_point() + geom_smooth(aes(group=Test)) + scale_color_discrete(name="Test")
Comparaison LinkedListStd / ArrayListStd :
ggplot(perf, aes(x=Taille,y=CPU, color=as.character(Version))) + geom_point() + geom_smooth(aes(group=Version)) + scale_color_discrete(name="Version") + ggtitle("Consommation CPU en fonction de la taille")
graphiques/LinkedListCPU.png

116 KiB

graphiques/comparaison_CPU_ajout_LinkedList_ArrayList_Standard.png

96 KiB

Taille,Version,CPU,Mem
100000,ArrayListStd,0.93,53940
100000,LinkedListStd,0.09,58976
200000,ArrayListStd,3.76,61608
200000,LinkedListStd,0.10,58392
500000,ArrayListStd,23.81,66520
500000,LinkedListStd,0.10,75740
#!/bin/bash
NTEST=2
TAILLES="100000 200000 500000"
echo "Taille,Version,CPU,Mem"
for taille in $TAILLES
do
for i in `seq $NTEST`
do
if [ $i = 1 ]
then
res=`(/usr/bin/time -f "%U,%M" java p4a.MainArrayListStd $taille > /dev/null) 2>&1`
echo "$taille,ArrayListStd,$res"
else
res=`(/usr/bin/time -f "%U,%M" java p4a.MainLinkedListStd $taille > /dev/null) 2>&1`
echo "$taille,LinkedListStd,$res"
fi
done
done
\ No newline at end of file
Taille,Version,CPU,Mem
1000000,Standard,0.11,90904
1000000,Perso,0.10,90812
2000000,Standard,0.12,135160
2000000,Perso,0.10,130076
5000000,Standard,60.82,367332
5000000,Perso,104.47,363560
10000000,Standard,124.54,559092
10000000,Perso,206.43,561180
#!/bin/bash
NTEST=2
TAILLES="1000000 2000000 5000000 10000000"
echo "Taille,Version,CPU,Mem"
for taille in $TAILLES
do
for i in `seq $NTEST`
do
if [ $i = 1 ]
then
res=`(/usr/bin/time -f "%U,%M" java p4a.MainLinkedListStd $taille > /dev/null) 2>&1`
echo "$taille,Standard,$res"
else
res=`(/usr/bin/time -f "%U,%M" java p4a.MainLinkedListPerso $taille > /dev/null) 2>&1`
echo "$taille,Perso,$res"
fi
done
done
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-13">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
/bin/
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>standard</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=13
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=13
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=13