小编cod*_*doo的帖子

在计算实验期间将结果写入文件的有效方法

我有一个软件可以执行一组实验(C++).没有存储结果,所有实验都需要一分多钟.生成的数据总量等于2.5 GB,这个数据太大,无法存储在内存中直到实验结束,然后写入文件.因此我把它们写成块.

for(int i = 0; i < chunkSize;i++){
    outfile << results_experiments[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

ofstream outfile("data"); 和outfile只在最后关闭.

然而,当我用4700千字节(实际上是4700/Chunksize = results_experiments元素的大小)编写它们时,实验需要大约50倍(超过一小时......).这是不可接受的,并使我之前的优化尝试看起来相当愚蠢.特别是因为这些实验需要再次使用许多不同的参数设置等(至少100次,但最好是更多)

具体我的问题是:

  • 写什么理想的chunksize?

  • 我目前编写数据的方式是否比(或效率非常低)更有效?

基本上:帮助我尽可能小地引入文件IO开销.

我认为应该可以更快地执行此操作,因为复制(写入和读取!)生成的文件(相同大小),花了我一分钟......

代码应该是相当平台独立的,不使用任何(非标准)库(我可以为单独的平台和更复杂的安装说明提供单独的版本,但这是一个麻烦...)如果获得总实验时间是不可行的在5分钟内,没有平台/库依赖(并且可能),我会认真考虑引入这些.(平台是Windows,但至少应该是一个简单的linux端口)

感谢你的付出.

c c++ performance file-io file

4
推荐指数
1
解决办法
1567
查看次数

标签 统计

c ×1

c++ ×1

file ×1

file-io ×1

performance ×1