我正在测试我们在Matlab中开发的一个独立应用程序,当时我注意到它的内存使用量,根据Windows任务管理器,在16gb以上达到峰值几倍。我决定在编译版本后面的脚本上运行带有profile -memory on
的Matlab的分析器,以查看内存峰值发生的位置,使用完全相同的输入。但是,它发现的最高峰值内存为2400860.00 Kb,或大约1/4,因为该函数基本上充当程序的main()
。
因此,我想知道人们是否注意到在运行已编译的Matlab程序和运行Matlab中的原始脚本之间存在巨大的内存使用差异。我注意到它在Matlab中运行了很长时间,但我认为这是由于分析器跟踪所有内存分配和解除分配,而不是读取和写入磁盘上的交换空间。
答案 0 :(得分:6)
快速回答这个问题。是的,MATLAB编译的应用程序运行的开销比MATLAB脚本更多。
这是因为MATLAB部署的应用程序打开了一个MATLAB版本,它存储在称为MCR的内存中。 MCR的运行开销比MATLAB更多。
我发现在这种情况下有用的一件事是重新编译,看看是否有帮助。如果没有,您可以尝试通过在段中运行计算来降低内存使用量。
这可能有助于更好地使用内存:http://www.mathworks.com/help/matlab/matlab_prog/strategies-for-efficient-use-of-memory.html
来源:
如果您有疑问,请发表评论。