use*_*647 4 .net dll matlab matlab-deployment
我将我的matlab程序转换为.net程序集,即dll文件.我已经制作了一个控制台C#应用程序添加dll文件并从php调用它.每次调用.exe时都会调用MCR.如何在服务器启动时初始化MCR而不是每次都关闭,即使在一段时间后调用了exe ??如果有任何其他方法可以使这个过程快速,请建议.
你可以直接在这里做很多事情.MCR架构具有较高的启动成本; 对于反复调用的短跑程序来说,这并不好.
你可以通过以下方式加快速度:
但这些可能不会让你超级快; 几乎肯定不够快,无法合理的页面加载时间.
要真正快速地实现它,您可能需要将程序体系结构更改为客户端/服务器,您可以在其中启动在其中运行MCR代码的持久服务器进程,并向PHP客户端提供请求.您需要执行其他编码以确保在"干净"的上下文中处理请求.
您还可以将MCR dll加载到Web服务器中,以使其在服务器生命周期内持续存在.这将是一个更简单的设置,但您可能受到单线程Matlab会话的限制,并且必须处理为每个请求获得一个干净的起点.
MathWorks解决方案是新的Matlab生产服务器,它可以将已编译的MCR代码加载到工作池中,并从预热的预加载的Matlab工作器实例中提供服务客户端M代码请求.它解决了MCR应用程序的这个问题.这个或DIY客户端/服务器方法的目的是在客户端请求发生之前在Matlab会话中"旋转"您的MCR代码,因此您的客户永远不会看到高MCR启动成本.
编辑:有关于将MCR组件部署到Web的完整MathWorks指南,即MATLAB应用程序部署Web示例指南,它不仅使用Matlab生产服务器.看起来他们主要说客户端/服务器,但您也可以直接在Web服务器中加载MCR组件以实现低负载水平.