部署的Matlab应用程序使用的内存比Matlab脚本多得多

部署的Matlab应用程序使用的内存比Matlab脚本多得多,matlab,memory,matlab-deployment,matlab-compiler,mcc,Matlab,Memory,Matlab Deployment,Matlab Compiler,Mcc,我正在测试我们在Matlab中开发的一个独立应用程序,当时我注意到,根据Windows任务管理器,它的内存使用量在16gb以上几次达到峰值。我决定在编译版本后面的脚本上运行Matlab的profiler,并使用完全相同的输入来查看内存峰值出现的位置。然而,它发现的最高峰值内存是2400860.00KB,或者大约是程序的main()函数的1/4 因此,我想知道人们是否注意到在Matlab中运行编译的Matlab程序和运行原始脚本之间的巨大内存使用差异。我注意到它在Matlab中运行的时间要长得多,

我正在测试我们在Matlab中开发的一个独立应用程序,当时我注意到,根据Windows任务管理器,它的内存使用量在16gb以上几次达到峰值。我决定在编译版本后面的脚本上运行Matlab的profiler,并使用完全相同的输入来查看内存峰值出现的位置。然而,它发现的最高峰值内存是2400860.00KB,或者大约是程序的
main()
函数的1/4


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

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

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

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

这可能有助于更好地使用内存:

资料来源:


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

确认一下:您是否在两次跑步中使用了同一台计算机?我以前没有遇到过这种情况,但可能在编译过程中对某些东西进行了优化,让几件事情同时发生(因此需要更多内存)。这也可能是由控制台模式下施加在matlab上的内存限制引起的。最后一个问题:当你在运行另一个进程之前已经占用了5~10G内存时,你达到了什么峰值?什么版本的matlab?你用两种不同的方法测量内存。当您在上运行
配置文件-内存时,任务管理器会报告什么内存使用情况?-1:如果您添加指向文档或基准的链接,表明MCR确实比在MATLAB中运行时开销更大,则会给出+1。添加了链接和内存使用帮助。MCR只是一个精简版的MATLAB解释器,是必要的图书馆。当您使用MATLAB编译器生成独立的应用程序时,在运行时,它仍将解释并运行构成原始程序的M文件(这些文件实际上已编码并包含在exe文件中)。因此,就速度而言,它应该是相同的(在第一次运行时提取CTF归档文件并启动MCR运行时需要更长的时间,就像启动MatlabIDE时看到的延迟):…(继续长时间注释)。。我也看不出为什么内存使用会有差异(尽管我还没有做任何测试来证实这一点)。我可能错了:)考虑联系技术支持得到一个明确的答案。我同意联系支持。他们的支持实际上是正当的。但是不管你怎么想,MCR都比在MATLAB中实际运行要慢。我的建议是换一种不同的语言。一旦开始编译应用程序,就超出了MATLAB的预期用途,并将从其他语言中获益。