MATLAB可执行程序太慢


MATLAB executable is too slow

我使用MATLAB中的deploytool将我的MATLAB程序转换为基于控制台的应用程序。MATLAB .m文件需要大约2秒才能执行,但在我将其转换为可执行文件并称为.exe后,需要45秒才能执行,这太长了。

我想将MATLAB程序与PHP集成。有没有另一种高效快捷的方法?在我的项目中,时间确实是一个很大的因素(不是开发时间,而是应用程序的执行时间)。那么有没有更省时的方法呢?

我在网上看到我们可以编写PHP扩展来调用MATLAB。这个方法是快还是和调用.exe文件一样快?MATLAB编码器对这个过程有帮助吗?如有其他选择,请告知

MATLAB编译的.exe将在您第一次运行它时遭受开销,因为它正在启动MCR:为什么我的应用程序用MATLAB编译器4.1编译需要很长时间才能启动?

除非您注销或重新启动操作系统,否则MCR将保持预加载状态。另一个有用的阅读:加速编译后的应用程序启动。

"为什么我使用MATLAB编译器创建的单机第一次启动需要更长的时间?"还报告连续运行应该更快,但如果稍后重新运行,则必须在内存中重新加载进程。

您可以将代码封装在tic toc中,部署它并检查执行所需的时间,以及启动开销。

加速.exe的替代方法是用PHP调用MATLAB。如果您保持MATLAB会话打开,您会遇到一次开销。您可以在启动时启动MATLAB,从而避免在PHP调用期间遭受开销。

有关更多信息,请阅读从PHP调用MATLAB,并记住,除非特别需要,否则不要使用exit

调用用MATLAB编译器创建的可执行文件将遭受相对于在实时MATLAB中调用程序的开销,因为它需要启动MCR。第一次启动时,这个时间会更长,但即使在第一次之后,仍然会有开销。

如果您不仅可以访问MATLAB编译器,还可以访问其中一个生成器产品(Builder for . net或-由于您使用PHP - Builder for Java可能更好),那么有一种方法可以解决此问题。

使用Builder产品,您可以创建一个独立组件(一个。net程序集或一个Java .jar)。然后,您可以创建一个。net或Java应用程序,它将运行,实例化matlab构建的组件(启动MCR),然后坐在那里等待来自PHP的调用。然后,每个调用都不会受到MCR启动开销的影响,并且从PHP调用到。net/java的开销应该要小得多。

正如其他人所说,当您调用可执行文件时,在加载可执行文件时存在(对于matlab来说非常大)开销。解决方案?只装一次。怎么做呢?这很复杂,而且取决于平台。

我认为做这样的事情最便携的方式是在matlab中制作服务器(我知道这是可能的,但我从未尝试过)。所以当你需要使用它时,你只需要连接到它并发送参数。

看看这个:HTTP服务器在matlab和这个:http://blogs.mathworks.com/loren/2011/05/27/transferring-data-between-two-computers-using-matlab/

作为上述内容的补充,我建议设置一个RAM驱动器,并将MCR_CACHE_ROOT系统变量设置为RAM驱动器上的一个目录。

这将大大提高进一步的启动时间。

如果有人在台式机上使用此方案,请确保您的RAM驱动器在重新启动期间是持久的。