Bonjour à tous,

Actuellement j'ai un code qui lit un fichier binaire octet par octet. (et convertie le contenu en int ou string...). Jusqu'à maintenant je lisai directement le fichier binaire.

Mais les fichiers qui sont lus sont très gros (jusqu'au Go). On m'a donc conseillé de passer par les buffers pour gagner en rapidité :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
std::ifstream fichier(filestdf.c_str(),std::ios_base::binary);                 
std::stringstream buffer;
 
buffer << fichier.rdbuf();
fichier.close();
Après beaucoup de modifications, mon programme fonctionne comme auparavant sauf qu'il est encore plus lent! Donc apparament il faudrai allouer la mémoire du buffer, ou/et "lire le fichier dans le buffer" au fur et à mesure (morceau par morceau).

Mon problème est que je ne trouve pas la syntaxe pour tester ce que j'explique plus haut. Mes questions : Est ce que la méthode que je veux appliquer est pertinente (point de vue rapidité)? Si oui, quelles sont les fonctions ou la méthode que je doit appliquer?