TP-programmation-imperative/tp10
2023-06-10 21:03:54 +02:00
..
src init 2023-06-10 21:03:54 +02:00
.gitignore init 2023-06-10 21:03:54 +02:00
Makefile init 2023-06-10 21:03:54 +02:00
README.md init 2023-06-10 21:03:54 +02:00
README.pdf init 2023-06-10 21:03:54 +02:00
sujet.pdf init 2023-06-10 21:03:54 +02:00

Compte-rendu minimal du mini-projet SDA : LCA et TH

Auteur : Fainsin Laurent

Groupe de TP : 1SN-G

Building

$ colormake

Cleaning

$ make clean

Generate PDF

$ pandoc README.md -o README.pdf \
-V geometry:"paperwidth=21cm, paperheight=47cm, margin=3cm"

Question 1.4

Implantation par listes chaînées d'une SDA.

Inconvénients

  • L'utilisation de pointeurs est parfois compliquée.
  • Le parcours de la liste est au minimum linéaire, et non pas en O(1).
  • L'utilisation des pointeurs peut mener à des situations imprévisibles voire dangereuse.

Avantages

  • La taille de la liste est dynamique.

Évaluation expérimentale.

Performances LCA

$ build/evaluer_alea_lca 1000 1000000
Borne : 1000
Taille : 1000000
Min : 8.68000E-04
Max : 1.12400E-03
$ time build/evaluer_alea_th 1000 1000000
5,82s user 0,00s system 99% cpu 5,823 total
$ valgrind build/evaluer_alea_lca 1000 1000000
HEAP SUMMARY:
    in use at exit: 0 bytes in 0 blocks
  total heap usage: 3,011 allocs, 3,011 frees, 1,430,544 bytes allocated

All heap blocks were freed -- no leaks are possible

Performances TH

$ build/evaluer_alea_th 1000 1000000
Borne : 1000
Taille : 1000000
Min : 8.84000E-04
Max : 1.09400E-03
$ time build/evaluer_alea_th 1000 1000000
0,06s user 0,00s system 99% cpu 0,060 total
$ valgrind build/evaluer_alea_th 1000 1000000
HEAP SUMMARY:
    in use at exit: 0 bytes in 0 blocks
  total heap usage: 1,011 allocs, 1,011 frees, 710,544 bytes allocated

All heap blocks were freed -- no leaks are possible

Comparaison

LH est bien plus efficace temporellement et spatialement que LCA.

Qualité du générateur aléatoire

Pourvu que Taille soit assez grand, on retrouve bien un générateur aléatoire de bonne qualité puisque Min et Max sont très proches. (à noter que j'ai choisi de véritablement afficher les fréquences, puisque celles-ci doivent aussi converger vers 0 quand Taille tend vers +infini)

Principales difficultés rencontrées

La généricité des modules est parfois compliquée, il faut bien cerner le problème et cela peut demander du temps. L'implémentation en elle-même des modules n'est pas si compliqué que cela, mais le debugging (avec valgrind) pour arriver à un code sans erreur ou warning est fastidieux.

Informations complémentaires

J'ai détaillé les étapes principales du mini-projet avec git. Ainsi j'ai parfois rajouté des fonctions dans lca et th pour résoudre des problèmes liés à d'autres exercices.

Bilan personnel

Il ressemblait fortement aux quelques derniers TP/TD, donc il solidifie mes connaissances en Ada et sur les pointeurs.