Недавно я пытался записать данные 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 требуется несколько минут. Как я могу улучшить скорость записи данных? Я думал, что это может быть проблема размера буфера кеша, но не уверен. Может кто-то помочь мне с этим?
I have found a way to solve this problem myself.The performance bottlenecks is
не вызвано IO. Если я использую outfile<<(Станд :: строка) str.c_str (); (Str длинная строка
как 200MB) , Это может занять менее одной секунды. Поэтому я использую многопоточность для соединения
данные в длинную строку и вывод через поток ввода-вывода. Скорость увеличивается на
около 6 раз на 4-ядерном компьютере.
Других решений пока нет …