Taille de buffer? [Résolu]

Taille de buffer? [Résolu] - C++ - Programmation

Marsh Posté le 16-01-2007 à 14:32:07    

Bonjour à tous.
 
J'ai créé un petit programme dont le but est d'effectuer un traitement sur des fichiers.
Le fonctionnement est donc le suivant :
1 - Ouverture du fichier source
2 - Ouverture du fichier cible
3 - Lecture de x bits du fichier source et mise en mémoire
4 - Traitement de ces bits
5 - Ecriture dans le fichiers cible
6 - Si ce n'est pas la fin du fichier on revient au numéro 3
7 - Fermeture des fichiers
 
Avec ce fonctionnement on peut donc traiter de gros fichiers (mon objectif est dans les 600Mo) sans réserver trop de mémoire.
 
La question que je me pose, c'est :
De quelle manière doit on déterminer le nombre x de bits qu'on lit dans le fichier à chaque itération?
Autrement dit, comment déterminer la taille de l'espace réservé en mémoire par mon buffer?
 
En vous remerciant!


Message édité par dwogsi le 16-01-2007 à 16:00:22
Reply

Marsh Posté le 16-01-2007 à 14:32:07   

Reply

Marsh Posté le 16-01-2007 à 15:03:31    

tu le laisse configurable, tu fait des essais de valeurs (genre toute les puissances de 2) et tu prends la plus rapide [:spamafote]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 16-01-2007 à 15:04:42    

Pour suivre, sinon moi je dirais un multiple de la taille d'un secteur sur le disque.

Reply

Marsh Posté le 16-01-2007 à 15:35:21    

Bon je me demandais s'il n'y avait pas une logique quelque part permettant de calculer ça mais visiblement la réponse est non.

0x90 a écrit :

tu le laisse configurable, tu fait des essais de valeurs (genre toute les puissances de 2) et tu prends la plus rapide [:spamafote]


Je vais faire des tests, et trouver une taille dans la limite du raisonable et offrant de bonnes perf.

breizhbugs a écrit :

Pour suivre, sinon moi je dirais un multiple de la taille d'un secteur sur le disque.


Voilà qui est intéressant! Et tout à fait logique.
Merci pour l'idée, je n'y aurais pas pensé tout seul.
 
Je vais faire le calcule à partir de cette donnée je pense. C'est à dire trouver le plus grand multiple de la taille des secteurs inférieur ou égale à la limite que j'aurais définie.
 
Qu'en dites-vous?

Reply

Marsh Posté le 16-01-2007 à 15:50:49    

Que rien ne vaut l'expérimentation pour être sûr.

 

Et à la limite une fois le choix établi, tu le fixe et s'il est gros tu ajoute une option -lowmem avec un buffer nettement plus petit pour les gens qui ont peu de ram.


Message édité par 0x90 le 16-01-2007 à 15:50:58

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 16-01-2007 à 15:55:23    

Bon ba, c'est parti pour une série de test sur différentes machines!
Je vais aussi mettre un buffer de petite taille pour les gens qui on peu de ram, comme tu me le conseils.

 

Merci pour vos idées.


Message édité par dwogsi le 16-01-2007 à 16:02:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed