J'ai testé les deux écrit configurations :
1) Fstream de mise en mémoire tampon :
// Initialization
const unsigned int length = 8192;
char buffer[length];
std::ofstream stream;
stream.rdbuf()->pubsetbuf(buffer, length);
stream.open("test.dat", std::ios::binary | std::ios::trunc)
// To write I use :
stream.write(reinterpret_cast<char*>(&x), sizeof(x));
2) Manuel de mise en mémoire tampon :
// Initialization
const unsigned int length = 8192;
char buffer[length];
std::ofstream stream("test.dat", std::ios::binary | std::ios::trunc);
// Then I put manually the data in the buffer
// To write I use :
stream.write(buffer, length);
Je m'attendais au même résultat...
Mais mon manuel de mise en mémoire tampon d'améliorer les performances par un facteur de 10 pour écrire un fichier de 100 mo, et la fstream de mise en mémoire tampon ne change rien par rapport à la situation normale (sans la redéfinition d'un tampon).
Quelqu'un a une explication de cette situation ?
EDIT : Voici les news : un indice de référence vient de le faire sur un superordinateur (linux 64-bit architecture, dure intel Xeon 8 core, système de fichiers Lustre et ... je l'espère bien configuré compilateurs) (et je ne l'explique pas la raison de la "résonance" pour un 1 manuel de tampon...)
EDIT 2 : Et la résonance de 1024 B (si quelqu'un a une idée à ce sujet, je suis intéressé) :