用于科学模拟的"日志"

Jor*_*tao 8 c++ logging scientific-computing

我正在使用C++对某些事情进行科学模拟.此时,由于参数数量的增加,我发现需要一个"日志":一个文件,其中存储了关于给定模拟的所有信息(不是输出;导致该输出的参数和相应的git)承诺).

我搜索过,在我看来,使用XML应该是一个不错的选择,因为它可以使用python,mathematica或其他分析软件轻松解析.

我想知道是否有人同意这一点,或者有更好的选择.

此外,我想知道如何选择当前的git提交将其保存在日志中.

hro*_*tyr 4

总的来说,我同意你的观点:

  • XML 得到了广泛的部署,有大量的工具可以使日志成形。
  • 它很灵活,您可以稍后添加其他属性,而不会破坏旧的“脚本”
  • 它是基于文件的,一个文档,一个文件,使用文件系统来组织日志“页面”
  • 它是基于文件的纯文本,find、grep、diff(按一下)等工具可以在紧急情况下为您提供帮助
  • 这是您自己的解决方案,您可以自由跟踪所需的任何信息,如果您认为有必要将日照时数与参数相关联,那就这样做。

话虽这么说,我应该添加存储格式取决于典型的用例,如果您需要找出为什么满月后的每个星期一优化器找不到任何解决方案,那么将很难(嗯,更难)想出由于结构的非规范性,需要 XPath/XQuery hackery 来做到这一点。

好吧,我能想到的所有缺点:

  • 它很冗长,我所在领域的 XML 文档往往更像 20 到 40 GB,而信息可能可以用更像 500 MB 来表示。
  • 它很慢(取决于您如何使用它),RDBM 甚至 nosql 解决方案都采用索引等技术来加快读取速度。
  • 它很灵活,这也是一个缺点:如果您每天碰巧添加两个新属性,您最终只会得到一个标记的自由文本,如果您想将其导入到以结构为中心的系统(SQL、 csv、json、...)
  • 这是你自己的解决方案,你必须编写它并维护它

至于第二位:git describe --always HEAD