当执行带有n
(例如10000)粒子的系统的计算机仿真时,通常的工作流程涉及以给定的间隔频繁保存系统的状态。这将需要在文件中写下所有粒子的位置坐标(因此,每行3个浮点/ double ,粒子的每一行),以及一些 header 信息。 float 精度设置为固定值。
我通常保存/记下配置文件的方式如下(该函数在每次调用时都会创建文件):
#include <iostream>
#include <fstream>
ofstream outfile(filelabel, ios::out);
outfile.precision(10);
outfile << "#Number of particles " << npart << endl;
for (int i=0; i<npart; i++){
outfile << particle[i].pos[0] << " " << particle[i].pos[1] << " " << particle[i].pos[2] << endl;
}
outfile.close();
通常,对于足够大的系统,每个此类文件的大小为0.5-4 MB,因此,当频繁保存它们时,它们最终的确会增加为大文件。所以我正在尝试学习如何将配置文件的大小优化到最低限度,例如依(想到的2种想法):
我将如何在C / C++可能性内缩小配置文件的大小的任何建议和建议,将受到高度赞赏。
小附录
根据到目前为止的建议,二进制保存格式似乎是一种很好的替代方法,但是,作为后续问题,例如,是否可以读取Python中二进制保存的数据?
鉴于已保存的配置文件,这一点很重要,我倾向于使用Python进行后期分析。
最佳答案
四个建议:
int
(或long
)的精度内表示所需的精度。 关于c++ - 优化:缩小C或C++中的文件大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58395488/