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那样工作,因为它不保存exprFullDefinition,只保存expr的显式值。

【讨论】:

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

以上是关于MX 文件的快速加载跨平台替代品 (Mathematica)的主要内容,如果未能解决你的问题,请参考以下文章

IMX Linux 用户手册 --- 1

IMX Linux 用户手册 --- 1

i.MX8 Linux构建并安装 i.MX8 交叉编译工具链

ARM开发板如何选型-I.MX6Q开发板

ruby 快速脚本调用Dyn的API(可选)删除Postini MX记录并添加小写的Google Mail MX记录。

基于linux5.15.5的IMX 参考手册 --- 1