begin process at 2012 05 29 06:14:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

samedi 4 mars 2006 à 23:37:49 | Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

adess00

Bonjour, Je voudrais savoir comment faire pour parcourir mon fichier plus rapidement, je travaille sur un algo de compression et donc il faudrai que mon fichier soit parcouru assez vite, winrar va plus vite sauf que lui il ecrit en plus !! Voila mon code je pense que c'est la qu il y a des choses a ameliorer fseek(fichier,0,SEEK_END); int lmsg=ftell(fichier); for (i=0;i
samedi 4 mars 2006 à 23:58:08 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

Guillemouze

je sais pas pourquoi tu fai du fseek !!! moi je ferai plutot : fseek(fichier, 0, SEEK_SET); while (!feof(fichier)) { c = fgetc(fichier); octet[c]++; } J'ai pas testé mais ca devrait marcher je pense
dimanche 5 mars 2006 à 00:02:48 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

adess00

Parce que qu en je fai sa le dernier octet renvoyé est en dehors du fichier et il met une valeur dans mon tableau alors qu il ne devrai pas voila pouquoi j ai utilisé fseek mais vu qu il est en dehors de ma boucle je crois pas que c sa qui pourrait ralentir ma lecture
dimanche 5 mars 2006 à 00:13:13 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

Guillemouze

heu c en dehors de la boucle ca :?!!!

for (i=0;i<lmsg-1;i++)
          {
          
fseek(fichier,i,SEEK_SET);
          c=fgetc(fichier);
          octet[c]+=1;
          }


normalement, quand tu fai un fgetc(), l'indicateur de position du fichier avance automatiquement !!!

enfin pour rester dans ton "delire", tu peu faire ca, ca sera surement plus rapide :

  fseek(fichier,0,SEEK_END);
  int lmsg=ftell(fichier) - 1;
 
fseek(fichier,0,SEEK_SET);
  for (i=0;i<lmsg;i++)
          {
          c=fgetc(fichier);
          octet[c]++;
          }

dimanche 5 mars 2006 à 00:27:43 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

adess00

ah je croyai que tu parlai de celui que j avai mi au debut je savai pas que sa avancait tout seul je vais tester tout de suite Merci !
dimanche 5 mars 2006 à 00:33:12 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

adess00

Mouai Winrar est beaucoup plus rapide quand meme Ce serais peut etre plus rapide de recuperer une chaine et de traiter la chaine, le nombre d acces au fichier serait reduit Mais si sa change rien alors la ... je sais plus quoi faire
dimanche 5 mars 2006 à 00:43:22 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

Guillemouze

ouais mais j'espere que tu essayes pas d'arriver au niveau de winrar?! parce que les mecs ca fait un pti bout de temps qu'ils sont dessus, et je pense qu'ils utilisent des algo mathematiques pour compresser.
Enfin sinon je sais pas trop commetn faire.bonne idee de minimiser le nombre d'acces fichier, reste a savoir si le gain est significatif ...
dimanche 5 mars 2006 à 00:54:51 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

adess00

Avec un text qui utilise que 18 caracteres j ai reussi a compresser 8 bits de mieux !!! L algo de huffman donnait 166bits une fois compressé et j ai compressé le texte a 158 bits !!!!!!!! Mais je dois l etendre a 256 carcteres De toute facon meme si j arrive pas au niveau de winrar je posterai quand meme ma source quelqu un trouvera peut etre un moyen de l ameliorer. Deja je crée pas d'arbre...
dimanche 5 mars 2006 à 01:49:10 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

BruNews

Administrateur CodeS-SourceS
Aucun algo correct ne lit un fichier octet par octet, il faut remplir un buffer et travailler en mémoire puis boucler tant que tu as des octets d'aspirés dans le buffer. Bosse sur un buffer de 512 Ko minimum, tous les disques ont au moins 4 Mo de cache à notre époque.

ciao...
[ Lien ]
BruNews, MVP VC++
dimanche 5 mars 2006 à 01:56:13 | Re : Fichier de 3Mo parcouru en 15sec, comment faire plus rapide ?

adess00

OK j avai tester avec 1000 octet et pour 3Mo c etait deja plus rapide donc je vais j utiliserai 512Ko pour la suite. La j en suis a inscrire les bits dans les octets mais je sais pas trop quoi utilisé je vais tenter les operateurs bit a bit je pense que c est mieux qu utiliser des chaines de caracteres

1 2

Cette discussion est classée dans : fichier, rapide, parcouru, 3mo, 15sec


Répondre à ce message

Sujets en rapport avec ce message

a l'aide (rapide) [ par alphaone ] j'ai une function qui remplace dans une chaine de caractere un mot par un autre.je voudrai, que quelqu'un qui me donne un script, qui ouvre un fichier tri alphabétique ultra rapide de chaines de caractères de longueur variable [ par mslider ] -- Bonjour, je sais que c'est un forum dédié au C mais je vais parler de pascal. En effet je connais bien ce langage et je l'ai utilisé pour trier a divser une chaine de caractere [ par boualiasma ] Bonjour, J'ai un fichier contenant deux champs: objet (chaine de caractère) et valeur(chaine de caractère) ces deux champs sont séparés par deux poin tester fichier vide ou non [ par boualiasma ] Bonjour, J'ai un fichier qui est généré dans le programme. Ce fichier peut être vide ou non. Je voulais tester si le fichier est vide ou non si le f Stream de fichier [ par warmup1992 ] Bonjour à tous, je sais pas trop si je suis dans la bonne section mais bhon si je me suis trompé veuillez me pardonner ^^ :) Enfaite je post pour avo traitement simultannée sur des fichiers [ par boualiasma ] Bonjour, Je voulais faire un traitement en même temps sur un nombre de fichier.J'ai trouvé des difficultés pour résoudre ce problème. Je vous expliq programmation en c++ [ par nanicha ] slt; svp si quelqu'un peut m'aider pour écrire un programme en c++qui sépare entre les balises d'une page html et le texte qui est entre ces balises e Interception de la copie de fichier [ par alphaone ] Bonjour, pour mon projet GPL ultracopier, j'aurai besoin d'intercepter la copie de fichier (ou le déplacement) pour la faire avec mon soft (et non pas Lecture d'un fichier en unicode [ par Albanderuaz ] Bonjour, J'essaie de lire un fichier en "mode" unicode mais ça ne fonctionne pas: [code=cpp] wfstream fichier; fichier.open(L"D:\\a.mp3",ios::in|ios


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,406 sec (3)

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