MATLAB 可执行文件太慢

2022-08-30 18:33:58

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

我想将MATLAB程序与PHP集成。有没有另一种有效且快速的方法可以做到这一点?在我的项目中,时间确实是一个重要因素(不是开发时间,而是应用程序的执行时间)。那么有没有一种方法可以花费更少的时间呢?

我在互联网上看到我们可以编写PHP扩展来调用MATLAB。此方法是快速还是与调用文件相同?MATLAB 程序员对此过程有任何帮助吗?如果有其他选择,请提及。.exe


答案 1

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

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

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

您可以将代码包含在 中,部署它并检查执行所花费的时间,以降低启动开销。tic toc

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

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


答案 2

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

如果您不仅可以访问MATLAB编译器,还可以访问其中一个Builder产品(Builder for .NET或 - 这可能更好,因为您正在使用PHP - Builder for Java),那么有一种方法可以解决这个问题。

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


推荐