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 024 / 247

Note :
Aucune note

Commentaire sur cette source (8)
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

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 codec de compression vidéo [ par jcom ] salut ! quelqu'un aurait pas une idée (ou des liens) sur la façon de créer un codec de compression vidéo (genre divx sans la prétention) ? changé curseur dans application Win32 [ par Stoomm ] Bonjour, j'aimerais chargé un curseur autre que celui par défault dans une appli Win32.Quelqu'un peut il me donner la marche à suivre svp.Merci d'avan changé curseur dans application Win32 [ par Stoomm ] Bonjour, j'aimerais chargé un curseur autre que celui par défault dans une appli Win32.Quelqu'un peut il me donner la marche à suivre svp.Merci d'avan demande librairie gtk pour win32 [ par francky ] quelqu'un pourrait-il me donner la librairie gtk.h?ou alors des liens vers des exemples d'interface graphique réaliséemerci d'avance. Algorithme de compression STAR amélioré [ par hi_vivie2 ] Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem Algorithme de compression STAR amélioré [ par hi_vivie2 ] Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem lien vers librairie glut pour win32 [ par francky ] m'étant fait déja passé pour un con ne sachant pas lire,pour tout ceux qui débutent et ne trouve pas la librairie glut pour windows permettant de cree gtk & win32 & Visual C++ [ par Paisible ] je vais peut être me faire jeter, mais bon...j'ai cherché dans le forum... et impossible de trouver la trace d'un quelconque post concernant la config win32 et sous-classement [ par mozert ] hi.mmm... mwai.. voila mon probleme..le sous-classement (subclassing)..est-il possible de sous-classer une fenetre appartenant à un processus differen


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,328 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é.