begin process at 2010 03 22 11:01:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > [C / WIN32] COMPRESSION HUFFMAN

[C / WIN32] COMPRESSION HUFFMAN


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :compression, huffman, win32 Niveau :Débutant Date de création :31/07/2007 Vu / téléchargé :5 158 / 333

Auteur : Neo_Fr

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
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

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture [C / WIN32] NTCLIB: COMPRESSION PAR API NATIVE
Source avec Zip [C / WIN32] CHANGER DE FOND D'ÉCRAN AVEC IACTIVEDESKTOP
Source avec Zip [C / WIN32] LIRE UN FICHIER LIGNE PAR LIGNE
Source avec Zip [C / WIN32] RATLIB - CRYPTER FACILEMENT EN RC4, AES ET TEA
Source avec Zip [C] ALGORITHME BRUTE FORCE

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews
Source avec Zip Source avec une capture IMPRESSION EN WIN32 API AVEC OPTIONS par racpp
Source avec Zip Source avec une capture INFOTIP SHELL EXTENSION (BULLE DE L'EXPLORATEUR WINDOWS) (WI... par racpp
Source avec Zip Source avec une capture BROUILLAGE DES FICHIERS JAVASCRIPT ET CSS(WIN32) par gagah1
Source avec Zip Source avec une capture CHANGE CURSEUR par ganjarasta

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture COMPRESSION FICHIERS ALGORITHME HUFFMAN C par xtremejames183
Source avec Zip CODEUR DE HUFFMAN par webis
Source avec Zip LZZ HUFFMAN COMPRESSION par f_l_a_s_h_b_a_c_k
Source avec Zip Source avec une capture [C++/WIN32] COMPRESSEUR/DECOMPRESSEUR LZW par yann_lo_san
Source avec Zip ZLIB REVUE EN PUR WIN32 ET SANS CRT par BruNews

Commentaires et avis

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.

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.

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

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??

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);
}

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

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

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

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 Afficher un character unicode [ par seifabdurahman ] Salut, Plus que 3 mois je cherche comment développez une simple application en language C Win32 API qui affiche des characters arab, j'ai trouver cet POO C++ /openGL /avec win32 ....HELP [ par plasttoon ] comme sa fait un bout que je suis pas venus ici je ne sais pas si sa vas tomber dans le bon forum. voilas, je me suis taper une excellente lecture ht erreure avec API mysql dans un programme win32 avec fenetre [ par Coralsnake ] 3, 2, 1, contact ! (ceux de ma génération s'en souviendront) Bonjour a toute la commuautes des programmeur. Voila j ai un probleme quand j utilise


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales