Skip to content

Rapport final

Hugo Di Gio edited this page Feb 10, 2017 · 4 revisions

Lien du diapo

Bilan de l'avancement

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.

Difficultés rencontrées

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.

Points forts du projet

  • 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

Tests effectués

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.

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.


Ce que ça nous a apporté

Ce que nous ne referions pas de la même manière

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.

Clone this wiki locally