-
Notifications
You must be signed in to change notification settings - Fork 0
Rapport final
Le but du projet est bien atteint (pouvoir compresser n'importe quel type de fichier et le décompresser via l'algorithme de Huffman adaptatif).
Il reste cependant beaucoup de chose à revoir pour faciliter l'utilisation du programme et améliorer ses performances.
Le plus difficile à été de bien comprendre comment l'ordre de Gallager est maintenu. L'implémentation de l'algorithme a été plus simple.
Il y a aussi la gestion du tampon qui nous posé quelques soucis (particulièrement les opérations binaires et le fait de savoir si une machine big/little endian poserait problème).
Enfin, le débogage de l'algorithme s'avère compliqué. Nous avons simplement débogué à l'aide de printf dans les fonctions et aussi à la fin en comparant le résultat obtenu à l'un de nos exemples.
Contrôler la saisie utilisateur se révèle être aussi une tâche complexe.
- Possibilité de (dé)compresser une liste de fichiers passé en paramètre (le programme fera la bonne opération par rapport à l'extension du fichier)
- Possibilité de compresser un mot saisie dans le terminal et de l'enregistrer ou simplement l'afficher
- Affichage du temps de la compression et de son taux
Le premier test s'est fait avec un simple fichier contenant le mot 'miss' puis 'mississipi' pour le comparer à notre exemple réalisé à la main et ainsi s'assurer de la validité du projet.
Ensuite nous avons effectué le test sur un fichier texte long et regardé si la décompression était identique à l'original.
Enfin, quatre tests sur divers type de fichiers ont été effectués pour avoir un aperçu des performances du programme.
Ces fichiers sont issu du site http://compression.ca/act/act-files.html.
- Un fichier .WAV Every star
- Taux compression: 3.614%
- Vitesse: infini
-
.TIFF (image) Frymire
- Taux compression: 40.965%
- Vitesse: 2188 ko/s
-
.TXT 1995 CIA World Fact Book
- Taux compression: 35.747%
- Vitesse: infini
-
.EXE NetScape navigator
- Taux compression: 18.687%
- Vitesse: infini
Une vitesse infini est en fait un temps d’exécution non mesurable (trop court). Il faudrait changer la méthode d'acquisition du temps.
En plus d'établir des modules, il faut impérativement définir TOUTES les signatures de fonctions. Cela évite d'avoir à refractorer le code trop souvent pour cause d'incompatibilité.
Ce qui nous amène donc au fait que l'on aurait du passer plus de temps à bien établir nos algorithmes.
Projet réalisé par Hugo Di-Giovanni et Tanguy Poret avec pour superviseuse Mme. Alexandra Bac.