.. | ||
src | ||
.gitignore | ||
Makefile | ||
README.md | ||
README.pdf | ||
sujet.pdf |
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.