Commit 5c0dbc1e authored by Moïse Destin's avatar Moïse Destin
Browse files

Exo 2

parent bff57907
Pipeline #4681 failed with stage
in 8 seconds
No preview for this file type
......@@ -2,14 +2,11 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="298fa7eb-9511-4983-9e33-1e1f5e3f9ebe" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/Java/TasMainExtraction.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gitlab-ci.yml" beforeDir="false" afterPath="$PROJECT_DIR$/.gitlab-ci.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Java/Tas.java" beforeDir="false" afterPath="$PROJECT_DIR$/Java/Tas.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Java/TasUtilisateur.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/RAPPORT.md" beforeDir="false" afterPath="$PROJECT_DIR$/RAPPORT.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/launch_analysis_tas_utilisateur.sh" beforeDir="false" afterPath="$PROJECT_DIR$/launch_analysis_tas_extraction.sh" afterDir="false" />
<change beforePath="$PROJECT_DIR$/launch_analysis_ajout_supp_prob.sh" beforeDir="false" afterPath="$PROJECT_DIR$/launch_analysis_ajout_supp_prob.sh" afterDir="false" />
<change beforePath="$PROJECT_DIR$/plots/fixed_binary_heap_amortized_time_java_decreasing.pdf" beforeDir="false" afterPath="$PROJECT_DIR$/plots/fixed_binary_heap_amortized_time_java_decreasing.pdf" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -80,6 +77,7 @@
<workItem from="1637312628002" duration="11337000" />
<workItem from="1637691394538" duration="66000" />
<workItem from="1638457678589" duration="11318000" />
<workItem from="1638478890764" duration="6397000" />
</task>
<servers />
</component>
......
......@@ -2,8 +2,6 @@ public class Tas {
private static final int d= 2;
private int[] monTas;
private int positionDansTas; // controle reaching capacity d'insertion
private int nombreEchange = 0;
......@@ -149,4 +147,11 @@ public class Tas {
public int getNombreEchangePourSuppression() {
return nombreEchangePourSuppression;
}
public int getPositionDansTas() {
return positionDansTas;
}
}
import java.util.Random;
public class TasMainAjoutSup {
public static void main(String[] args) {
int i, time_ind = 0, pop_ind = 0;
// Tableau dynamique.
ArrayList<Integer> a = new ArrayList<Integer>();
// Analyse du temps pris par les opérations.
Analyzer time_analysis = new Analyzer();
// Analyse du nombre de copies faites par les opérations.
Analyzer swap_analysis = new Analyzer();
// Analyse de l'espace mémoire inutilisé.
Analyzer memory_analysis = new Analyzer();
long before, after;
// Booléen permettant de savoir si une allocation a été effectuée.
boolean memory_allocation;
// notre tas
Tas tas;
tas = new Tas(100000);
double probabilite = 0.5;
double random_number;
for(i = 1; i <= 100000 ; i++){
random_number = Math.round(randomFloat(0, 1) * 10) / 10.0;
// Ajout d'un élément et mesure du temps pris par l'opération.
before = System.nanoTime();
if(tas.getPositionDansTas() == 0 || random_number <= probabilite) // make sure to not delete when table empty
tas.insererElement(new Random().nextInt(100000-1) + 1);
else
tas.supprimerValeurMinimale();
after = System.nanoTime();
// Enregistrement du temps pris par l'opération
time_analysis.append(after - before);
// Enregistrement du nombre de copies efféctuées par l'opération.
memory_analysis.append( tas.getTasSize() - tas.getNombreDelementStocker() );
}
// Affichage de quelques statistiques sur l'expérience.
System.err.println("Total cost : "+time_analysis.get_total_cost());
System.err.println("Average cost : "+time_analysis.get_average_cost());
System.err.println("Variance :"+time_analysis.get_variance());
System.err.println("Standard deviation :"+time_analysis.get_standard_deviation());
// Sauvegarde les données de l'expérience: temps et nombre de copies effectuées par opération.
time_analysis.save_values("../plots/fixed_binary_heap_extract_time_java.plot");
memory_analysis.save_values("../plots/fixed_binary_heap_extract_memory_java.plot");
}
public static double randomFloat(double min, double max){
return (double) (min + Math.random() * (max - min));
}
}
......@@ -3,7 +3,7 @@ avec un tableau de 10 elements où les éléments sont insérés dans l'ordre cr
avec un tableau de 10 elements où les éléments sont insérés dans l'ordre decroissant, on effectue trois echanges
Que se passe t-il lorsque l'on ajoute des opérations de suppression? En temps? En mémoire?
Puisqu'on a alloué la quantité de mémoire dès le départ,
La complexité amortie des opérations d’ajout et de suppression/extraction a t-elle changé sur les expériences
utilisant un tableau dynamique ? Pourquoi ?
RED='\033[0;31m'
NC='\033[0m' # No Color
# Compilation et exécution en Java:
echo "${RED} Compilation du code source en Java ${NC}"
cd Java
javac *
echo "${RED} Exécution des benchmarks en Java ${NC}"
java TasMainAjoutSup
echo "${RED} Nettoyage ${NC}"
rm *.class
#
cd ..
# Observation des résultats
### Dans le répertoire plots, lisez le contenu du fichier plot_result
cd plots
more plot_tas_ajout_sup
#
#### puis lancez ce script avec gnuplot
#
gnuplot plot_tas_ajout_sup
This diff is collapsed.
This diff is collapsed.
# Script GNUPLOT
# Dire que le fichier de sortie est un fichier Postscript
set terminal pdf color
set xlabel "Nombre d'elements ajoutes" font "Helvetica,24"
##############################################################
########### Affichage des temps de calcul amortis ###########
##############################################################
# Titre de l'axe des ordonnées
set ylabel "Temps amorti" font "Helvetica,24"
# Nom du fichier Postscript en sortie
set output 'fixed_binary_heap_extract_time_java.pdf'
plot [0:100000][0:600] 'fixed_binary_heap_extract_time_java.plot' using 1:3 w lines title "Amortized JAVA"
###############################################################
########### Affichage de l'espace mémoire gaspillé ###########
###############################################################
# Titre de l'axe des ordonnées
set ylabel "Memoire gaspillee" font "Helvetica,24"
# Nom du fichier Postscript en sortie
set output 'fixed_binary_heap_extract_memory_java.pdf'
plot 'fixed_binary_heap_extract_memory_java.plot' using 1:2 w lines title "Espace memoire inutilise JAVA"
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment