Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[C / WIN32] COMPRESSION HUFFMAN


Information sur la source

Catégorie :API Classé sous : compression, huffman, win32 Niveau : Débutant Date de création : 31/07/2007 Vu / téléchargé: 4 479 / 288

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Je cherchais depuis un moment un algo huffman facile a utiliser et j'ai fini par trouver mon bonheur ici: http://huffman.sourceforge.net, le code est facile a utiliser et il est en c en plus, mais je trouvais vraiment ce code lent pour compresser des gros fichiers, j'ai donc essayer de l'adapter en win32, mon probleme est que le code est maintenant encore plus lent!, pourtant je n'ai absolument rien changer mis a part l'allocation mémoire et la lecture/écriture des fichiers, je ne sais vraiment pas d'ou ca peut venir, je vous poste donc les deux versions.
J'attend vos remarques et suggestions avec impatiences.

Merci
 

Conclusion

Code source original: http://huffman.sourceforge.net
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de max12 le 31/07/2007 23:10:28 administrateur CS

En faisant les statistiques permettant la compresison tu peux toujours sauter des caractère pour gagner un peu de speed. Ensuite je te dirais simplement de prendre un autre algorithme car Huffman c'est pourrit pour cette utilisation, au mieux  sa peut servir a compresser du texte avec un arbre déjà fait et encore.

signaler à un administrateur
Commentaire de Neo_Fr le 31/07/2007 23:32:18

Mon pb c'est pa l'algo en lui meme, mon pb c'est que la version que j'ai adapter en win32 et + lente que l'originale et ca me parait vraiment bizarre.

signaler à un administrateur
Commentaire de shenron666 le 01/08/2007 20:20:39

quel intérêt d'adapter un code portable en code non portable ?
pour ton problème de rapidité, tu peux regarder du côté des routines de lecture / écriture de fichiers
à part cela, et les routines d'allocation tu n'as pas changé grand chose donc faut pas chercher loin

signaler à un administrateur
Commentaire de Neo_Fr le 01/08/2007 22:39:46

Si j'ai essayer de l'adapter c'est pour la performance, pour les routines de lecture et d'écriture je ne vois pas pourquoi les apis serait plus lente elles sont censé etre plus rapide que les runtimes, je me suis surement planter quelque part mais ou??

signaler à un administrateur
Commentaire de f_l_a_s_h_b_a_c_k le 01/08/2007 23:31:15

pour la vitesse je ferais quelque chose comme ca,
il va compresser en memoire  et lire et ecrire en une shot de 50000 le gain en vitesse!

se que je peur voir avec ton code il lit un bytes a la fois!

compress_file(char name[256])
{ char *mem;
  char *memout;
  FILE *fpin;
FILE *fpout;
long l=0;
long lo=0;

mem=malloc(50 000);
memou=malloc(50 000);

fpin=fopen(name,rb);
fpou=fopen(name,rb);

do {

l=fread(mem,50 000,1,fpin);
huffman_encode_memory(mem, l, *memout, &lo);
l=fwrite(mem,lo,1,fpou);


} while(!feof(fp);


free(mem);
free(memou);
fclose(fpin);
fclose(fpou);
}

signaler à un administrateur
Commentaire de Neo_Fr le 02/08/2007 07:44:31

Oui d'accord pour ca, mais pourquoi la version avec les apis est + lente que la version originale alors que les 2 versions lise le fichier de le meme facon

signaler à un administrateur
Commentaire de shenron666 le 02/08/2007 20:01:13

au risque de me répéter, quelle est la ou quelles sont les différence(s) entre ton implémentation et l'implémentation originale ?
- types utilisés (tu utilises des defines ce qui revient au même)
- méthodes d'allocation / désallocation
- méthode de lecture écriture sur disque
si je n'ai rien oublié ça va vite à faire le tour
et ce que tu dis :
"...les 2 versions lise le fichier de le meme facon"
est faux, tu as changé les routines de lecture
reprends les routines utilisées à l'origine et testes par toi même
les routines Win32 que tu utilises sont des routines pour lire et écrire des blocs de données
elles ne sont pas optimisées pour lire et écrire octet par octet contrairement aux routines fputc et fgetc

pour ce qui est d'adapter pour la performance, c'est pas en changeant les types utilisés mais la façon de traiter les données
détermines la partie du programme qui s'avère être un goulot d'étranglement et améliore cette partie

comme le suggère f_l_a_s_h_b_a_c_k, fais en sorte que les routines de codage / décodage travaillent sur des blocs plutot que octet par octet

bon courage

signaler à un administrateur
Commentaire de Neo_Fr le 02/08/2007 22:51:24

"...les 2 versions lise le fichier de le meme facon"
Les deux versions lisent bien le fichier octet par octet

Maintenant si tu me dit que les apis ne sont pas optimisé pour lire octet par octet ca repond a ma question

je trouve quand meme un peu surprenant que les apis fassent pires que les crt...

sinon pour les types c'est juste parceque je prefere :p

signaler à un administrateur
Commentaire de ndubien le 22/04/2009 18:47:39 9/10

Pour informations:
Il me semble que votre version WIN32 ne fonctionne pas avec Windows Vista : lorsque j'ai voulu compresser, windows m'a envoyer le message "ce programme ne répond plus" !

Malgré ce léger problème, cette source me semble être très intéressante pour comprendre le fonctionnement de cette méthode de compression !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

compression et c++ [ par fakbill ] A l'adresse http://www.cjkware.com/wamckee/huffman.zip j'ai touvé une implémentation en c++ de l'algo de huffman.Pb: Je ne cromprends rien à la façon Compression JPEG [ par inkognitodz ] S.V.P. J'ai besoin du code (C++Builder) qui permet de compresser d [ API WIN32 ] IMAGE/ICONE PERSONNALISE TOOLBAR [ par lectpe ] Bonjour.J'aimerais mettre des icones personnalisées (ou des bitmap) dans une barre d'outils avec l'API win32.Je ne sais pas comment faire. Aidez-moi, Faire une tempo sans utiliser 100% du CPU [ par Xantra ] Bonjour,J'ai un probleme, je suis en train de developper une appli win32 sans fenetre (un processus), et je voudrai faire un attente de plusieur minut DESACTIVER SOURIS RICHEDIT API WIN32 C [ par lectpe ] Bonjour,je travaille avec l'API WIN32 en C et je voudrais savoir s'il existe une fonction pour désactiver la souris au dessus d'un richedit.Je m'expli [Win32] sélection listview [ par Spunk62 ] Bonjour, je voudrais récupérer la valeur de la position d'une colonne et ligne d'une listview.pour les lignes j'ai trouvé ceci (sa fonctionne très bie problème de compilation de bibliothèque XMlL dans un programme C sous visual Studio. [ par boualiasma ] Salut,- j' extrais tous les sept archives libxml2-2.7.3.win32, iconv-1.9.2.win32, zlib-1.2.3.win32, libxmlsec-1.2.11+.win32, libxslt-1.1.24.win32, xsl Win32(control) [ par NitRic ] Bonjour, pour mon premier prog Win32 en C++ j'ai décider de faire un petit NotPad sauf que la j'ai un problème:J'ai fais des menu et dans le menu Édi compression et decompression d'un fichier [ par asma ] salut tt le monde , vous pouvez me filer un coup de main les gars ?? je veux une astuce pour compresser et decompresser un fichier (EN C++ evidemment Où trouver le Win32 SDK ? [ par PierreP ] ... avec un help ou qqchose de ce genre qui explique comment on utilise les fonctions.Impossible de le trouver sur Le site de Microsoft !


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.