Matlab可执行文件太慢了

我使用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 Compiler创建的可执行文件相对于在实时MATLAB中调用程序会产生开销,因为它需要启动MCR。 这将在您第一次启动时更长,但即使在第一次之后仍会有开销。

如果您不仅可以访问MATLAB编译器,而且可以访问Builder产品之一(Builder for .NET或 – 由于您使用的是PHP – Builder for Java可能更好),有一种方法可以解决这个问题。

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

正如其他人所说,当你调用可执行文件时,在加载可执行文件时会有一个(对于matlab来说很大)开销。 解决方案? 只加载一次。 怎么做? 它很复杂,取决于平台。

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

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