Commit 41293256 authored by david's avatar david
Browse files

Sujet TP complet avant validation

parent cda4c06b
# Sujet de TP 1
# Sujet de TP 1: Gitlab, Benchmarks et tableaux dynamiques
Vous travaillerez cette année en binôme. Il ne sera pas possible de changer
## Règles pour ce semestre
Vous travaillerez en binôme durant les TPs. Il ne sera pas possible de changer
de binôme en cours de semestre.
Il est interdit de partager du code avec d'autres binômes ou de "s'en inspirer".
Toute ressemblance suspecte sera AUTOMATIQUEMENT considérée comme de la fraude
et sévèrement sanctionnée.
Chaque semaine, un rendu vous sera demandé (vous aurez jusqu'au dimanche soir pour
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
......@@ -37,3 +49,67 @@ Ajoutez ensuite ce fichier au projet
### 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).
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.
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.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -12,7 +12,7 @@ set xlabel "Nombre d'elements ajoutes" font "Helvetica,24"
set ylabel "Temps amorti" font "Helvetica,24"
# Nom du fichier Postscript en sortie
set output 'pdf/dynamic_array_amortized_time_alpha_2.pdf'
set output 'dynamic_array_amortized_time_alpha_2.pdf'
plot [0:1000000][0:600] 'dynamic_array_time_c.plot' using 1:3 w lines title "Amortized C", 'dynamic_array_time_cpp.plot' using 1:3 w lines title "Amortized C++", 'dynamic_array_time_java.plot' using 1:3 w lines title "Amortized JAVA", 'dynamic_array_time_python.plot' using 1:3 w lines title "Amortized Python"
......@@ -23,7 +23,7 @@ plot [0:1000000][0:600] 'dynamic_array_time_c.plot' using 1:3 w lines title "Amo
set ylabel "Memoire gaspillee" font "Helvetica,24"
# Nom du fichier Postscript en sortie
set output 'pdf/dynamic_array_wasted_memory_alpha_2.pdf'
set output 'dynamic_array_wasted_memory_alpha_2.pdf'
plot 'dynamic_array_memory_c.plot' using 1:2 w lines title "Espace memoire inutilise C", 'dynamic_array_memory_python.plot' using 1:2 w lines title "Espace memoire inutilise Python"
......@@ -34,6 +34,6 @@ plot 'dynamic_array_memory_c.plot' using 1:2 w lines title "Espace memoire inuti
set ylabel "Nombre de copies effectuees" font "Helvetica,24"
# Nom du fichier Postscript en sortie
set output 'pdf/dynamic_array_copy_alpha_2.pdf'
set output 'dynamic_array_copy_alpha_2.pdf'
plot 'dynamic_array_copy_c.plot' using 1:2 w boxes title "Nombre de copies de valeurs effectuees C", 'dynamic_array_copy_python.plot' using 1:2 w boxes title "Nombre de copies de valeurs effectuees Python"
\ 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