MX 文件的快速加载跨平台替代品 (Mathematica)
Posted
技术标签:
【中文标题】MX 文件的快速加载跨平台替代品 (Mathematica)【英文标题】:Fast-to-load cross-platform alternative to MX files (Mathematica) 【发布时间】:2011-05-26 09:17:54 【问题描述】:在 Mathematica 中,可以使用Save
(.m 文件)或DumpSave
(.mx 文件)保存中间结果/工作区的部分状态。
.m 文件是可移植的,但加载速度很慢(包含大量数据)。
.mx 文件加载速度很快,但不能在平台/架构之间移植。
有没有一种方法可以保存通用的 Mathematica 表达式,并且可以快速加载它们,并且它们可以在平台之间移植?有没有人尝试过/基准测试不同的方法来做到这一点?
一种可能的解决方案是保存 .m 文件(跨平台),然后在新平台上开始工作时将它们转换为 .mx 文件(一次性操作)。有没有一种全自动的方式将 .m 文件转换为 .mx 文件?
【问题讨论】:
官方新闻组中的相关帖子:"Get["file.mx"] doesn't work"。回答 by David Bailey 和 by Albert Retey 是最有帮助的(恕我直言)。 【参考方案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
那样工作,因为它不保存expr
的FullDefinition
,只保存expr
的显式值。
【讨论】:
“但这不像 Save/DumpSave 那样工作。”是相当神秘的。你能进一步解释一下吗? 不幸的是,WDX 的读/写速度很慢(比 MX 慢很多倍)。Compress
方法很耗内存。我们确实需要一种更好的方法来处理大数据。
@Szabolcs 我在 Windows 和 Linux 之间使用 WDX 时遇到问题。我从 Windows 导出了一个巨大的列表,在尝试导入 Linux 时出错。有什么办法调试吗?以上是关于MX 文件的快速加载跨平台替代品 (Mathematica)的主要内容,如果未能解决你的问题,请参考以下文章
i.MX8 Linux构建并安装 i.MX8 交叉编译工具链