2012-10-02 41 views
3

我在超级计算机上做了大型模拟。由于这些仿真运行起来很昂贵,我需要不时地将结果写入磁盘。此外,大多数超级计算机的最长运行时间为1或2天,之后您的工作将自动终止。因此,我需要能够为我的应用程序添加“简历”功能。什么文件格式适合于记录/配置文件?

对于大型数据集,我使用“原始”二进制文件,因为这是可以将信息转储到磁盘的最快速度。稍后,我可以将这些二进制文件转换为可以在普通桌面上进行后处理的格式。但是,我还需要在代码运行时记录有关模拟的一些参数信息,以便我不会有任何问题计算出我的结果对应的参数集。

此外,我需要一个配置文件,以便可以从我开始/恢复作业时设置参数。我想要做的就是将logging/configure文件合并为一个步骤,以便代码可以将所有需要的信息记录到下一个简历的配置文件中。我还需要这个文件易于人类阅读,分层,并且在解析库方面有很好的支持。我主要关心的是我正在开发的语言,即C++,但在python中也可以支持。

到目前为止,我在xml使用boost::property_tree这样做,但我不确定这是最好的方式。具体来说,我的xml文件看起来有点过于冗长!我可以使用的文件格式有更好的选择吗?如何支持图书馆?我更喜欢仅头文件库来防止更改构建结构。

+0

如果你想要语言和库的可用性之间的互操作性,XML是要走的路。 (或者也许是JSON,但我不知道C++有什么可用的。)冗长性很糟糕,但我建议只处理它。这不像你要手动编辑文件,而且也没有提到解析文件时出现任何性能问题。 (无论如何,使用XML更容易高效)如果空间有问题,压缩应该有所帮助。 – millimoose

+1

几年前,我的确遇到了同样的问题。你的XML解决方案听起来比我实现的任何东西都好我建议将您的参数记录到与记录数据不同的文件中,否则,您的方法听起来不错。 (有HDF,分层数据格式,但这是不可读的。)我犯的一个错误是缺乏对我的代码的良好修订控制,其中(a)版本号与运行时参数一起丢弃,(b)简洁的更新日志。如果您的研究延续时间超过六个月,那么您将永远不会记住没有这个结果生成哪个代码。 – thb

+0

如果您可以使用平面文件,那么请务必使用平面文件!如果您需要分层数据,那么XML或JSON值得考虑。 – paulsm4

回答

0

你将会处于一种非常独特的情况下,Python不会句柄 - 所以只要你坚持使用标准(即xml,json,与python合作绝不应该成为一个问题。

正如其他人所说,JSON和XML是您的最佳选择。行业标准永远不会出错。更好的文档,更广泛的测试,更好的代码可读性 - 听起来像,XML和JSON都可以做你想做的事情,并且它们的编码/解码是可比的。如果文件大小是一个问题,我相信在未压缩的形式,JSON是一个更轻量级 - 如果不是,只需选择更适合您的人类可读的文件类型。

相关问题