Для записи большого количества данных в файл у меня есть 2 подхода:
Запись напрямую в ofstream
ofstream file ("c: \\ test.txt");
для (int i = 0; i <10000; ++ i)
{
файл << данные [я];
}
Сначала записать в istringstream, а затем сразу записать в ofstream
ostringstream strstream;
для (int i = 0; i <10000; ++ i)
{
strstream << данные [я];
}
ofstream файл ("c: \\ test.txt");
файл << strstream.str ();
Неудивительно, что второй подход быстрее, фактически в 4 раза быстрее, чем первый подход на моей машине HP7800.
Но почему? Я знаю, что ofstream использует внутри filebuf, а ostringstream использует stringbuf - в качестве буфера они все должны находиться в памяти, поэтому не должны иметь никакого значения.
В чем разница внутри?