8

我正在测试我们在 Matlab 中开发的一个独立应用程序时,我注意到它的内存使用量,根据 Windows 任务管理器,在 16gb 以上达到了数倍的峰值。我决定profile -memory on在编译版本后面的脚本上运行 Matlab 的分析器,以使用完全相同的输入来查看内存峰值发生在哪里。然而,它发现的最高峰内存是 2400860.00 Kb,或者大约是该函数的 1/4,该函数基本上充当程序的main().

因此,我想知道人们是否注意到在运行已编译的 Matlab 程序和在 Matlab 中运行原始脚本之间存在巨大的内存使用差异。我注意到在 Matlab 中运行需要更长的时间,但我认为这是由于分析器跟踪所有内存分配和释放,而不是读取和写入磁盘上的交换空间。

4

1 回答 1

7

真正快速地回答这个问题。是的,MATLAB 编译的应用程序比 MATLAB 脚本运行的开销更大。

这是因为 MATLAB 部署的应用程序打开了一个 MATLAB 版本,该版本存储在称为 MCR 的内存中。MCR 的运行开销比 MATLAB 多。

我发现在这种情况下有用的一件事是重新编译并查看是否有帮助。如果没有,您可以尝试通过分段运行计算来降低内存使用量。

这可能有助于更好地使用内存:http: //www.mathworks.com/help/matlab/matlab_prog/strategies-for-efficient-use-of-memory.html

来源:

如果您有任何问题,请发表评论。

于 2013-06-27T16:03:42.933 回答