【问题标题】:Fast-to-load cross-platform alternative to MX files (Mathematica)MX 文件的快速加载跨平台替代品 (Mathematica)
【发布时间】:2011-05-26 09:17:54
【问题描述】:

在 Mathematica 中,可以使用Save(.m 文件)或DumpSave(.mx 文件)保存中间结果/工作区的部分状态。

.m 文件是可移植的,但加载速度很慢(包含大量数据)。

.mx 文件加载速度很快,但不能在平台/架构之间移植。

有没有一种方法可以保存通用的 Mathematica 表达式,并且可以快速加载它们,并且它们可以在平台之间移植?有没有人尝试过/基准测试不同的方法来做到这一点?

一种可能的解决方案是保存 .m 文件(跨平台),然后在新平台上开始工作时将它们转换为 .mx 文件(一次性操作)。有没有一种全自动的方式将 .m 文件转换为 .mx 文件?

【问题讨论】:

标签: serialization wolfram-mathematica


【解决方案1】:
  • 来自 Alexey 链接的帖子:

    str=OpenWrite[file,BinaryFormat->True];
    
    BinaryWrite[str,Compress[expr],"TerminatedString"];
    
    Close[str];
    

    这不如使用 mx 文件快,但仍然非常快。

    大卫·贝利


    另一种选择似乎是 WDX (Wolfram Data eXchange) 我是 在各种机器上使用没有问题,这似乎也 可移植,可以像 MX 文件一样使用,是二进制的,有文档记录 因此我会考虑得到官方支持。它被 数据包功能,所以我猜它的性能相当好,并且 在所有系统上都经过良好测试(我的经验所做的假设 支持到现在)。

    (摘自 Albert Retey 的回答,也来自 Alexey 的链接)

但是这些不像Save/DumpSave那样工作,因为它不保存exprFullDefinition,只保存expr的显式值。

【讨论】:

  • “但这不像 Save/DumpSave 那样工作。”是相当神秘的。你能进一步解释一下吗?
  • 不幸的是,WDX 的读/写速度很慢(比 MX 慢很多倍)。 Compress 方法很耗内存。我们确实需要一种更好的方法来处理大数据。
  • @Szabolcs 我在 Windows 和 Linux 之间使用 WDX 时遇到问题。我从 Windows 导出了一个巨大的列表,在尝试导入 Linux 时出错。有什么办法调试吗?
猜你喜欢
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2022-06-10
相关资源
最近更新 更多