我有一个软件可以执行一组实验(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端口)
感谢你的付出.