diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9da1c4a242234952b534b43cfab1e0fc65ba092d..c78fd03070e7849f02a9cdc2c6b5f5fe2ce1549f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,15 +7,10 @@ sda:test: script: - echo "Exercice 1" - ls -lF AUTHORS.md + - ls -lF plots/*_alpha_bench.pdf - echo "Exercice 2" - - ls -lF plots/*_alpha_2.pdf + - ls -lF plots/*_alpha_1.5_p_bench.pdf - echo "Exercice 3" - - ls -lF plots/my_plot_result - - grep my_plot_result launch_analysis.sh - - ALPHA=$(head -n 1 AUTHORS.md) - - echo "ALPHA ${ALPHA}" - - ls -lF plots/*_alpha_${TEST}.pdf - - echo "Exercice 4" - ls -lF RAPPORT.md diff --git a/README.md b/README.md index 05b8114589834853d6053f989b9d720f8556db41..6fdcd76bf9a32a29cfa2c72c59732da6a5f1aabb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Sujet de TP 1: Gitlab, Benchmarks et tableaux dynamiques +# Sujet de TP 2: Benchmarks optimisation ## Règles pour ce semestre @@ -15,104 +15,42 @@ rendre le TP si vous ne finissez pas à temps) via gitlab. Vos travaux seront évalués une fois à mi-semestre et une fois à la fin du semestre. -## Exercice 1: git -### Clonez le projet sda sur votre compte étudiant +## Exercice 1: Optimisation de la structure, en faisant uniquement des ajouts. -Dans votre terminal, placez vous dans le répertoire où vous souhaitez créer le dossier -`git clone git@depot.lipn.univ-paris13.fr:david/sda.git` +Le nom de votre branche est constitué de vos numéros d'étudiants séparés par un _ -`cd sda` +`git checkout -b tp2_NUMERO1_NUMERO2` -### Vérifiez que vous êtes dans la branche tp1 +Rajouter le fichier `AUTHORS.md` avec vos noms, prénoms et numéros d'étudiants. -`git branch` +Dans le langage de votre choix, effectuez un benchmark permettant +d'identifier la valeur de `alpha` qui permet d'otenir le plus petit temps amorti +pour l'ajout d'une valeur dans le tableau dynamique. -Si n'êtes pas dans la branche tp1, tapez +Vous produirez des fichiers pdf sur lequel toutes les courbes de toutes vos experiences +apparaîtront. Le nom des fichiers terminera par `alpha_bench.pdf`. -`git checkout tp1` -### Créez votre propre branche +## Exercice 2: ajout et suppression -Le nom de votre branche est constitué de vos numéros d'étudiants séparés par un `_` +Créer second programme (avec une nouvelle fonction `main` donc), dans lequel vous reproduirez +l'expérience précédente, avec une modification: au lieu d'ajouter un élément dans la table à chaque itération, +vous ajouterez l'élément `i` avec une probabilité `p` et vous supprimerez le dernier élément du tableau +avec une probabilité `1-p`. -`git checkout -b NUMERO1_NUMERO2` +Dans vos expériences, vous fixerez `alpha` à `1.5` et ferez varier `p`. +Le nom des fichiers pdf terminera par `alpha_1.5_p_bench.pdf`. -### Ajoutez un fichier `AUTHORS.md` à votre branche -A la racine du projet, créez un fichier `AUTHORS.md` contenant 2 lignes avec vos noms, prénoms et numéros d'étudiants. +## Exercice 3: Au rapport -Ajoutez ensuite ce fichier au projet +Commentez le resultat de vos expériences dans un fichier `RAPPORT.md` -`git add AUTHORS.md` +1) Dans l'exercice 1, quel est l'alpha le plus efficace en temps? Est-il également le plus efficace +en terme de mémoire gaspillée? Quel est le lien entre temps gagné et mémoire gaspillée? -`git commit -am "Ajout du fichier AUTHORS.md"` +2) Dans l'exercice 2, commentez les différents benchmarks quand `p=0.5`, `p < 0.5` et `p > 0.5` +Tentez d'expliquer ces différents résultats. -### Poussez votre branche sur gitlab -`git push` -### Vérifiez sur gitlab - -Sur la page de gitlab: -- vérifiez que la branche a été poussée dans `Repository -> Branches` -- vérifiez que le pipeline a échoué (car vous n'avez pas encore fini le TP), dans `CI/CD -> Pipelines` -- cliquez sur `failed` pour voir le détail des tests effectués - - -## Exercice 2: Lancer les benchmarks - -Vérifiez que le répertoire `plots` ne contient que le fichier `plot_result`. - -Nous allons à présent tester différentes implémentations des tableaux dynamiques dans différents langages. - -Lisez les fichiers `main` de chaque langage et vérifiez que la même expérience est bien effectuée à chaque fois. - -Exécutez le script `SHELL` (le lire ne vous fera pas de mal non plus): - -`sh launch_analysis.sh` - -Une fois les calculs effectués, regardez les fichiers `pdf` obtenus dans le répertoire `plots` - -Ajoutez tous les fichiers pdf obtenus à votre branche en utilisant les commandes - -`git add plots/*.pdf` - -`git commit -am "Première expérience"` - -`git push` - -## Exercice 3: A vous de jouer! - -Dans le langage de votre choix (C, C++, JAVA, pas possible en Python), modifiez la fonction `enlarge_capacity` -afin de multiplier la capacité du tableaux par une autre constante `alpha` que 2 (Demandez à votre chargé de TP -de choisir une constante alpha pour votre binôme). - -Ajouter une ligne au début du fichier AUTHORS.md contenant la valeur de alpha (et uniquement cette valeur). - -Dans la fonction `main`, changez le nom de fichiers de sortie en ramplaçant `alpha_2` par `alpha_votre_valeur` - -Dans le répertoire `plots`, faites une copie du fichier `plot_result` - -`cp plot_result my_plot_result` - -Modifiez le fichier `my_plot_result` pour ne fournir que des courbes dans le langage que vous avez choisi. -Modifiez également le nom des fichiers pdf en sortie afin qu'ils contiennent la bonne valeur de alpha. - -Modifiez le fichier `launch_analysis.sh` afin qu'il exécute gnuplot à partir de `my_plot_result` - -Relancez le script `launch_analysis.sh` - -Ajoutez les résultats (fichiers pdf) à votre branche. - -## Exercice 4: Au rapport! - -Créez un fichier RAPPORT.md à la racine projet. - -1) Tentez d'expliquer pourquoi certains langages sont plus rapides que d'autres dans cette expérience. - -2) Observez l'espace mémoire inutilisé au fur et à mesure du programme. Qu'en pensez vous? -Imaginez un scénario dans lequel cela pourrait poser problème. - -3) Décrivez les différences obtenues en faisant varier alpha dans les deux expériences. - -A FINIR AVANT DIMANCHE ! -Votre travail n'est validé que si le pipeline réussi. \ No newline at end of file +A RENDRE AVANT DIMANCHE! \ No newline at end of file