буферизация std :: fstream против ручной буферизации (почему 10-кратное усиление при ручной буферизации)?
Я проверил две конфигурации записи:
1) Fstream буферизация:
// 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(&x), sizeof(x));
2) Ручная буферизация:
// 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);
Я ожидал того же результата ...
Но моя ручная буферизация повышает производительность в 10 раз при записи файла размером 100 МБ, а буферизация в fstream ничего не меняет по сравнению с обычной ситуацией (без переопределения буфера).
У кого-нибудь есть объяснение этой ситуации?