Как быстро записать большие объемы данных в текстовые файлы

Недавно я пытался записать данные pointcloud в файл .txt с помощью C ++ в Visual Studio 2010. Сначала я использовал ostream для вывода данных, но обнаружил, что при записи данных это происходит медленно.

Мой код:

std::ofstream outfile;
outfile.open(filename.c_str());
for(int index = 0;index < pointcloud.size();index++){
outfile<<pointcloud[index].x<<pointcloud[index].y<<pointcloud[index].z
<<pointcloud[index].r<<pointcloud[index].g<<pointcloud[index].b<<'\n';
}
outfile<<std::endl;

Выходной Pointcloud очень огромный, почти 0,5G. Для записи в файл .txt требуется несколько минут. Как я могу улучшить скорость записи данных? Я думал, что это может быть проблема размера буфера кеша, но не уверен. Может кто-то помочь мне с этим?

0

Решение

I have found a way to solve this problem myself.The performance bottlenecks is

не вызвано IO. Если я использую outfile<<(Станд :: строка) str.c_str (); (Str длинная строка
как 200MB) , Это может занять менее одной секунды. Поэтому я использую многопоточность для соединения
данные в длинную строку и вывод через поток ввода-вывода. Скорость увеличивается на
около 6 раз на 4-ядерном компьютере.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]