Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1435 connectés 

  FORUM HardWare.fr
  Programmation

  C: Optimiser l'ecriture disque grace aux Buffers ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C: Optimiser l'ecriture disque grace aux Buffers ?

n°11136
BiOxyde
Posté le 25-01-2001 à 01:27:02  profilanswer
 

On souhaite réeecrire un fichier quelconque dans un autre fichier. Comment déterminer la taille optimale du buffer à utiliser et cela sans faire une lecture préalable du fichier? Comment déclarer un tel buffer? ...

 

mood
Publicité
Posté le 25-01-2001 à 01:27:02  profilanswer
 

n°11144
SoWhatIn22
Posté le 25-01-2001 à 08:18:41  profilanswer
 

comprends pas bien la question... de quel buffer veux tu parler?

n°11145
Combi_A_Ve​ndre
Posté le 25-01-2001 à 08:28:15  profilanswer
 

Si tu veux utiliser un buffer en ram (c'est bien ça?), recopie les champs de ton fichier dans une liste chainée, comme ça tu ne t'inquiètes pas de la taille. Fixe juste une taille max pour la chaine.
Sinon, je ne vois pas exactement ce que tu recherches.
 
vw

n°11153
krolours1
Posté le 25-01-2001 à 10:52:37  profilanswer
 

En principe les lecture et écriture doivent se faire avec un buffer de taille BUFSIZ (défini dans stdlib.h).
 
En principe c'est pas à toi d'optimiser les entrées/sorties, le système d'exploitation s'en occupe.
 
Tu peux également utiliser mmap pour mapper les fichiers en mémoire.

n°11189
BiOxyde
Posté le 25-01-2001 à 13:05:50  profilanswer
 

voila on doit faire un prog de compression (fichiers et/ou repertoires) la premiere etape consiste a regrouper tous les fichiers en un seul puis de creer l'arbre de codage correspondant (huffman). Mais on a ordre d'optimiser la copie des fichiers dans le fichier compresssé en utilisant la taille adéquate du buffer en fonction de la taille des fichiers je pense, mais c ne surement pas le seul parametre qui rentre en compte pour determiner la taille optimale du buffer (en effet je vais pas faire un fread de 1 char et fwrite de 1 char , car chaque acces disque coute en temps d'execution. De meme prendre un buffer trop grand, ralentit aussi le process). Comment inplémenter dynamiquement un buffer qui s'adapte le mieux à une copie de fichier a fichier? Voila ma question.

 

n°11225
Roswell_
Posté le 25-01-2001 à 15:20:58  profilanswer
 

#include<sys/stat.h>
 
...
struct stat fileinfo;
...
stat("fichier.alire", &fileinfo);
int taille=fileinfo.st_size
...
 
Donc tu peux choisir la taille de ton buffer en fonction de la taille du fichier.

n°11229
Combi_A_Ve​ndre
Posté le 25-01-2001 à 15:31:01  profilanswer
 

Ben il faut voir comment le disque dur ecrit un fichier, plus clairement quelle est la taille d'un paquet qu'il ecrit d'un coup, et prendre un buffer multiple de cette taille.
 
vw

 

n°11284
Gertom
Posté le 25-01-2001 à 18:12:03  profilanswer
 

Apparement, et d'après des test que j'ai fait avec un prog en C++, la taille optimale du buffer en écriture est de 256Ko.
J'ai un disque 8.4Go, DMA33, avec sans doute 512Ko de cache.
L'idée pour le writebuffer, c'est de ne pas dépasser la taille de la cache du disque (sinon, le prog doit attendre que le disque écrive les données).
Avec les tests que j'ai fait, un buffer de plus de 512Ko est plus lent qu'un buffer de 256Ko.
 
Pour le readbuffer, à mon avis, le plus gros est le mieux (en fonction de la RAM disponible).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  C: Optimiser l'ecriture disque grace aux Buffers ?

 

Sujets relatifs
Comment ouvrir un fichier existant en écriture en Java ?[C++] Pb d'écriture de fichiers binaires
Plus de sujets relatifs à : C: Optimiser l'ecriture disque grace aux Buffers ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR