2017-03-08 125 views
0

最近我想写点云数据在Visual Studio 2010中使用C++在我使用的ostream输出数据开始到.txt文件,但我发现它慢当写入数据时。如何快速写入大量数据转化为txt文件

我的代码:

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; 

输出点云是非常巨大的,几乎是0.5G。写入.txt文件需要几分钟的时间。如何提高写入数据的速度?我认为这可能是缓存缓冲区大小的问题,但不确定。有人可以帮我弄这个吗?

+0

你可以使用std ::副本以提高性能。 –

+0

是对源数据('pointcloud')所有的内存中,或者是它的容器包装以“基于云”的数据?如果是后者,你的问题可能在那里? – franji1

+3

获得更快的硬盘和更多的RAM。您的性能受到硬盘驱动器速度的限制。改变这个宇宙的物理定律之后,唯一的答案就是更快的硬件。 –

回答

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

不是IO.If引起我用OUTFILE < <(的std :: string)str.c_str(); (str是一个长字符串 像200MB),这可能需要小于一second.so我使用多线程到 数据拼接成一个长字符串和输出通过IO stream.The速度上的4core增加 约6倍电脑。