Commit 1c9a7c13 authored by Moïse Destin's avatar Moïse Destin
Browse files

Exercice 2 Benchmark

parent ee897b9a
Pipeline #4483 failed with stage
in 8 seconds
No preview for this file type
......@@ -2,8 +2,9 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="298fa7eb-9511-4983-9e33-1e1f5e3f9ebe" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/Java/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/Java/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/launch_analysis.sh" beforeDir="false" afterPath="$PROJECT_DIR$/launch_analysis.sh" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Java/Analyzer.java" beforeDir="false" afterPath="$PROJECT_DIR$/Java/Analyzer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Java/Tas.java" beforeDir="false" afterPath="$PROJECT_DIR$/Java/Tas.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -69,7 +70,7 @@
<workItem from="1635251919885" duration="31000" />
<workItem from="1635251962630" duration="689000" />
<workItem from="1635365695090" duration="598000" />
<workItem from="1635770461992" duration="14725000" />
<workItem from="1635770461992" duration="21061000" />
</task>
<servers />
</component>
......
......@@ -61,7 +61,7 @@ public class Analyzer {
BigDecimal get_average_cost(){
if(cumulative_cost.isEmpty())
throw new RuntimeException("List is empty");
return cumulative_cost.get(cumulative_cost.size()-1).divide(new BigDecimal(cumulative_cost.size()));
return cumulative_cost.get(cumulative_cost.size()-1).divide(new BigDecimal(cumulative_cost.size()), RoundingMode.HALF_UP);
}
/**
......
......@@ -69,4 +69,7 @@ public class Tas {
return nombreEchange;
}
public int getTasSize(){
return monTas.length;
}
}
import java.util.Random;
public class TasAjoutCleAleatoire {
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);
Random random = new Random();
for(i = 0; i < tas.getTasSize() ; i++){
// Ajout d'un élément et mesure du temps pris par l'opération.
before = System.nanoTime();
tas.insererElement(randomNumber(random, 0, 100000));
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.
// S'il y a eu réallocation de mémoire, il a fallu recopier tout le tableau.
swap_analysis.append( tas.getNombreEchange());
// Enregistrement de l'espace mémoire non-utilisé.
memory_analysis.append( a.capacity() - a.size() );
}
// 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/dynamic_array_time_java_random.plot");
swap_analysis.save_values("../plots/dynamic_array_swap_java_random.plot");
memory_analysis.save_values("../plots/dynamic_array_memory_java_random.plot");
}
public static int randomNumber(Random random, int min, int max){
return random.nextInt(max - min + 1) + min;
}
}
import java.util.Scanner;
public class TasAjoutCleCroissant {
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); //1000000
for(i = 0; i < tas.getTasSize() ; i++){
// Ajout d'un élément et mesure du temps pris par l'opération.
before = System.nanoTime();
tas.insererElement(i);
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.
// S'il y a eu réallocation de mémoire, il a fallu recopier tout le tableau.
swap_analysis.append( tas.getNombreEchange());
// Enregistrement de l'espace mémoire non-utilisé.
memory_analysis.append( a.capacity() - a.size() );
}
// 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/dynamic_array_time_java_croissant.plot");
swap_analysis.save_values("../plots/dynamic_array_swap_java_croissant.plot");
memory_analysis.save_values("../plots/dynamic_array_memory_java_croissant.plot");
}
}
public class TasAjoutCleDecroissant {
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);
for(i = tas.getTasSize()-1; i >= 0 ; i--){
// Ajout d'un élément et mesure du temps pris par l'opération.
before = System.nanoTime();
tas.insererElement(i);
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.
// S'il y a eu réallocation de mémoire, il a fallu recopier tout le tableau.
swap_analysis.append( tas.getNombreEchange());
// Enregistrement de l'espace mémoire non-utilisé.
memory_analysis.append( a.capacity() - a.size() );
}
// 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/dynamic_array_time_java_decroissant.plot");
swap_analysis.save_values("../plots/dynamic_array_swap_java_decroissant.plot");
memory_analysis.save_values("../plots/dynamic_array_memory_java_decroissant.plot");
}
}
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 TasAjoutCleCroissant
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_croissant
#
#### puis lancez ce script avec gnuplot
#
gnuplot plot_tas_croissant
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 TasAjoutCleDecroissant
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_decroissant
#
#### puis lancez ce script avec gnuplot
#
gnuplot plot_tas_decroissant
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 TasAjoutCleAleatoire
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_random
#
#### puis lancez ce script avec gnuplot
#
gnuplot plot_tas_random
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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