php - new - Matlab ejecutable demasiado lento
new line title matlab (3)
Como otros dijeron, cuando llamas a los archivos ejecutables, hay una sobrecarga (realmente grande para matlab) cuando se carga el ejecutable. ¿La solución? Carguelo solo una vez. ¿Cómo hacerlo? Es complicado y depende de las plataformas.
Creo que la forma más portátil de hacer algo así es crear un servidor en Matlab (sé que esto es posible, pero nunca lo intenté). Entonces, cuando necesite usarlo, simplemente conéctese y envíe los argumentos.
Eche un vistazo a esto: servidor HTTP en matlab y esto: http://blogs.mathworks.com/loren/2011/05/27/transferring-data-between-two-computers-using-matlab/
deploytool
mi programa Matlab
en una aplicación basada en consola utilizando deploytool
en Matlab. El archivo Matlab .m
tarda unos 2 segundos en ejecutarse, pero después de convertirlo en un ejecutable y llamar al .exe
, tarda 45 segundos en ejecutarse, que es demasiado largo.
Quiero integrar el programa Matlab con PHP. ¿Hay alguna otra manera eficiente y rápida de hacer esto? En mi proyecto, el tiempo es realmente un factor importante (no el tiempo de desarrollo sino el tiempo de ejecución de la aplicación). Entonces, ¿hay algún método que tome menos tiempo?
Vi en Internet que, podemos escribir extensiones PHP para llamar al Matlab. ¿Es este método rápido o lo mismo que llamar al archivo .exe
? ¿El programador de Matlab es de ayuda para este proceso? Si hay alguna opción alternativa, por favor mencionarlo.
Llamar a un ejecutable creado con MATLAB Compiler sufrirá una sobrecarga relativa a llamar al programa dentro de MATLAB en vivo, ya que necesita iniciar el MCR. Esto será más largo la primera vez que lo inicie, pero seguirá habiendo una sobrecarga incluso después de la primera vez.
Si tiene acceso no solo al compilador MATLAB, sino a uno de los productos de Builder (Builder para .NET o - que probablemente sea mejor ya que está usando PHP - Builder para Java) hay una forma de evitar esto.
Con los productos de Builder puedes crear un componente independiente (ya sea un ensamblado .NET o un .jar de Java). A continuación, puede crear una aplicación .NET o Java que se ejecutará, crear una instancia de su componente creado por MATLAB, que inicia el MCR, y luego sentarse y esperar una llamada de su PHP. Cada llamada no sufrirá en absoluto la sobrecarga de inicio de MCR, y solo debería tener una sobrecarga mucho más pequeña desde la llamada de PHP a .NET / Java.
Un .exe compilado de MATLAB sufrirá una sobrecarga la primera vez que lo ejecute, porque está iniciando el MCR: ¿Por qué mi aplicación compilada con MATLAB Compiler 4.1 tarda mucho tiempo en arrancar?
A menos que cierre la sesión o reinicie su sistema operativo, la MCR permanecerá precargada. Otra lectura útil: acelerar el inicio de aplicaciones compiladas .
" ¿Por qué mi independiente creado utilizando el compilador MATLAB tarda más tiempo para comenzar la primera vez? " También informa que las ejecuciones consecutivas deberían ser más rápidas, pero si vuelve a ejecutar más tarde, tendrá que volver a cargar el proceso en la memoria.
Puede encerrar su código dentro de tic toc
, implementarlo y verificar cuánto tiempo está tomando la ejecución, en contra de la sobrecarga de inicio.
La alternativa para acelerar el .exe
sería llamar a MATLAB con PHP. Si mantienes abierta la sesión de MATLAB, te topas con la sobrecarga una vez. Puede iniciar MATLAB al inicio, evitando así sufrir los gastos generales específicamente durante la llamada con PHP.
Para obtener más información, lea Llamar a MATLAB desde PHP , y tenga en cuenta que no desea usar exit
menos que sea específicamente necesario.